Be able to output the dl4j computationGraph.summary() for debugging purposes
I had some problems to output the dl4j computationGraph.summary(). After configuring the logging right, I succeeded to output it for training.
But still, after deserializing the prepared dag, something like this is not possible:
NeuralNetwork.Prepared p = prepared.producers(NeuralNetwork.Prepared.class).findFirst().get().peek(); System.out.println(p.getComputationGraph().summary());
Perhaps add some additional logs or allow such a code from above (by making some more things public)?
It would also be great to be able to add some handlers/listeners for training like it is possible in dl4j (for example to save the model after every epoch, or doing some more evaluation every epoch).
WRT handlers/listeners, these are very much supported. To use these:
(1) Subclass the NeuralNetwork class and override the getPreparer(...) method to return a new Preparer subclass you'll also define.
(2) In your Preparer subclass, just override the "on____(...)" methods that correspond to the events you're interested in, e.g. onTrainingEpoch(...). You can also use methods like onGraphBuilderReady(...) to manipulate the DL4J NN before training to add arbitrary DL4J Listeners and such.
WRT pulling out the computation graph from NeuralNetwork.Prepared, I'll push a commit to make its getComputationGraph() method public (although you could also get access to it using the event handler mechanism explained above).
(1) I cannot override getPreparer because "The type Prepared is not visible" (part of return Argument).
What I am not trying to do, is to add some visualization: https://deeplearning4j.konduit.ai/v/en-1.0.0-beta7/tuning-and-training/visualization where I like to add a special listener to the ComputationGraph before(!) training.
It is also impossible to do prepared.producers(NeuralNetwork.Prepared.class).... because of this.