package org.deeplearning4j.examples.userInterface;
import org.deeplearning4j.api.storage.StatsStorage;
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.deeplearning4j.ui.storage.InMemoryStatsStorage;
import org.nd4j.linalg.dataset.api.iterator.DataSetIterator;
/**
* A simple example of how to attach Deeplearning4j's training UI to a network
*
* 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 UIExample {
public static void main(String[] args){
//Get our network and training data
MultiLayerNetwork net = UIExampleUtils.getMnistNetwork();
DataSetIterator trainData = UIExampleUtils.getMnistData();
//Initialize the user interface backend
UIServer uiServer = UIServer.getInstance();
//Configure where the network information (gradients, activations, score vs. time etc) is to be stored
//Then add the StatsListener to collect this information from the network, as it trains
StatsStorage statsStorage = new InMemoryStatsStorage(); //Alternative: new FileStatsStorage(File) - see UIStorageExample
int listenerFrequency = 1;
net.setListeners(new StatsListener(statsStorage, listenerFrequency));
//Attach the StatsStorage instance to the UI: this allows the contents of the StatsStorage to be visualized
uiServer.attach(statsStorage);
//Start training:
net.fit(trainData);
//Finally: open your browser and go to http://localhost:9000/train
}
}