Java源码示例:org.deeplearning4j.optimize.listeners.PerformanceListener

示例1
@Test
public void testListenerSerialization() throws Exception {
    //Note: not all listeners are (or should be) serializable. But some should be - for Spark etc

    List<TrainingListener> listeners = new ArrayList<>();
    listeners.add(new ScoreIterationListener());
    listeners.add(new PerformanceListener(1, true, true));
    listeners.add(new TimeIterationListener(10000));
    listeners.add(new ComposableIterationListener(new ScoreIterationListener(), new PerformanceListener(1, true, true)));
    listeners.add(new CheckpointListener.Builder(tempDir.newFolder()).keepAll().saveEveryNIterations(3).build());   //Doesn't usually need to be serialized, but no reason it can't be...


    DataSetIterator iter = new IrisDataSetIterator(10, 150);

    MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder()
            .list()
            .layer(new OutputLayer.Builder().nIn(4).nOut(3)
                    .activation(Activation.SOFTMAX)
                    .lossFunction(LossFunctions.LossFunction.MCXENT).build())
            .build();

    MultiLayerNetwork net = new MultiLayerNetwork(conf);
    net.init();
    net.setListeners(listeners);

    net.fit(iter);

    List<TrainingListener> listeners2 = new ArrayList<>();
    for(TrainingListener il : listeners){
        log.info("------------------");
        log.info("Testing listener: {}", il);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ObjectOutputStream oos = new ObjectOutputStream(baos);
        oos.writeObject(il);
        byte[] bytes = baos.toByteArray();

        ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes));
        TrainingListener il2 = (TrainingListener) ois.readObject();

        listeners2.add(il2);
    }

    net.setListeners(listeners2);
    net.fit(iter);
}