package org.deeplearning4j.examples.userInterface; import org.deeplearning4j.api.storage.StatsStorageRouter; import org.deeplearning4j.api.storage.impl.RemoteUIStatsStorageRouter; import org.deeplearning4j.examples.userInterface.util.UIExampleUtils; import org.deeplearning4j.nn.multilayer.MultiLayerNetwork; import org.deeplearning4j.ui.api.UIServer; import org.deeplearning4j.ui.stats.StatsListener; import org.nd4j.linalg.dataset.api.iterator.DataSetIterator; /** * A version of UIExample that shows how you can host the UI in a different JVM to the * * For the case of this example, both are done in the same JVM. See comments for what goes in each JVM in practice. * * NOTE: Don't use this unless you *actually* need the UI to be hosted in a separate JVM for training. * For a single JVM, this approach will be slower than doing it the normal way * * To change the UI port (usually not necessary) - set the org.deeplearning4j.ui.port system property * i.e., run the example and pass the following to the JVM, to use port 9001: -Dorg.deeplearning4j.ui.port=9001 * * @author Alex Black */ public class RemoteUIExample { public static void main(String[] args){ //------------ In the first JVM: Start the UI server and enable remote listener support ------------ //Initialize the user interface backend UIServer uiServer = UIServer.getInstance(); uiServer.enableRemoteListener(); //Necessary: remote support is not enabled by default //uiServer.enableRemoteListener(new FileStatsStorage(new File("myFile.dl4j")), true); //Alternative: persist them to disk //------------ In the second JVM: Perform training ------------ //Get our network and training data MultiLayerNetwork net = UIExampleUtils.getMnistNetwork(); DataSetIterator trainData = UIExampleUtils.getMnistData(); //Create the remote stats storage router - this sends the results to the UI via HTTP, assuming the UI is at http://localhost:9000 StatsStorageRouter remoteUIRouter = new RemoteUIStatsStorageRouter("http://localhost:9000"); net.setListeners(new StatsListener(remoteUIRouter)); //Start training: net.fit(trainData); //Finally: open your browser and go to http://localhost:9000/train } }