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.optimize.listeners.ScoreIterationListener;
import org.deeplearning4j.ui.api.UIServer;
import org.deeplearning4j.ui.stats.StatsListener;
import org.deeplearning4j.ui.storage.FileStatsStorage;
import org.deeplearning4j.ui.storage.InMemoryStatsStorage;
import org.nd4j.linalg.dataset.api.iterator.DataSetIterator;
import java.io.File;
/**
* A version of UIStorageExample showing how to saved network training data to a file, and then
* reload it later, to display in in the UI
*
* @author Alex Black
*/
public class UIStorageExample {
public static void main(String[] args){
//Run this example twice - once with collectStats = true, and then again with collectStats = false
boolean collectStats = true;
File statsFile = new File("UIStorageExampleStats.dl4j");
if(collectStats){
//First run: Collect training stats from the network
//Note that we don't have to actually plot it when we collect it - though we can do that too, if required
MultiLayerNetwork net = UIExampleUtils.getMnistNetwork();
DataSetIterator trainData = UIExampleUtils.getMnistData();
StatsStorage statsStorage = new FileStatsStorage(statsFile);
net.setListeners(new StatsListener(statsStorage), new ScoreIterationListener(10));
net.fit(trainData);
System.out.println("Done");
} else {
//Second run: Load the saved stats and visualize. Go to http://localhost:9000/train
StatsStorage statsStorage = new FileStatsStorage(statsFile); //If file already exists: load the data from it
UIServer uiServer = UIServer.getInstance();
uiServer.attach(statsStorage);
}
}
}