@Override public ComputationGraphUpdater getComputationGraphUpdater() { if (computationGraphUpdater == null && model instanceof ComputationGraph) { computationGraphUpdater = new ComputationGraphUpdater((ComputationGraph) model); } return computationGraphUpdater; }
public static org.deeplearning4j.nn.api.Updater getUpdater(Model layer) { if (layer instanceof MultiLayerNetwork) { return new MultiLayerUpdater((MultiLayerNetwork) layer); } else if (layer instanceof ComputationGraph) { return new ComputationGraphUpdater((ComputationGraph) layer); } else { return new LayerUpdater((Layer) layer); } }
Pair<Gradient, Double> gradAndScore = graph.gradientAndScore(); ComputationGraphUpdater updater = new ComputationGraphUpdater(graph); updater.update(gradAndScore.getFirst(), 0, graph.batchSize());
/** * Get the ComputationGraphUpdater for the network */ public ComputationGraphUpdater getUpdater() { if (solver == null) { solver = new Solver.Builder().configure(conf()).listeners(getListeners()).model(this).build(); solver.getOptimizer().setUpdaterComputationGraph(new ComputationGraphUpdater(this)); } return solver.getOptimizer().getComputationGraphUpdater(); }
@Override public void updateGradientAccordingToParams(Gradient gradient, Model model, int batchSize) { if (model instanceof ComputationGraph) { ComputationGraph graph = (ComputationGraph) model; if (computationGraphUpdater == null) { try (MemoryWorkspace ws = Nd4j.getMemoryManager().scopeOutOfWorkspaces()) { computationGraphUpdater = new ComputationGraphUpdater(graph); } } computationGraphUpdater.update(gradient, getIterationCount(model), batchSize); } else { if (updater == null) { try (MemoryWorkspace ws = Nd4j.getMemoryManager().scopeOutOfWorkspaces()) { updater = UpdaterCreator.getUpdater(model); } } Layer layer = (Layer) model; updater.update(layer, gradient, getIterationCount(model), batchSize); } }