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.J7StatsListener; import org.deeplearning4j.ui.stats.StatsListener; import org.deeplearning4j.ui.storage.FileStatsStorage; import org.deeplearning4j.ui.storage.sqlite.J7FileStatsStorage; import org.nd4j.linalg.dataset.api.iterator.DataSetIterator; import java.io.File; /** * A variant of the UI example showing the approach for Java 7 compatibility * * *** Notes *** * 1: If you don't specifically need Java 7, use the approach in the standard UIStorageExample as it should be faster * 2: The UI itself requires Java 8 (uses the Play framework as a backend). But you can store stats on one machine, copy * the file to another (with Java 8) and visualize there * 3: J7FileStatsStorage and FileStatsStorage formats are NOT compatible. Save/load with the same one * (J7FileStatsStorage works on Java 8 too, but FileStatsStorage does not work on Java 7) * * @author Alex Black */ public class UIStorageExample_Java7 { 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_Java7.dl4j"); //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 J7FileStatsStorage(statsFile); //Note the J7 net.setListeners(new J7StatsListener(statsStorage), new ScoreIterationListener(10)); net.fit(trainData); System.out.println("Done"); } }