// Build the logger for getting information
Logger logger = LoggerFactory.getLogger(PropertyClassifier.class);
// Build the configuration (neural network)
logger.info("Build configuration....");
int numberInputs = 3;
int numberBetweenInOut = 3;
int numberOutputs = 3;
double learningRate = 0.1;
MultiLayerConfiguration configuration = new NeuralNetConfiguration.Builder()
.activation(Activation.TANH)
.updater(new Sgd(learningRate)) // Stochastic Gradient Descent
.list() // Create a ListBuilder for creating a NeuralNetConfiguration
.layer(new DenseLayer.Builder()
.nIn(numberInputs).nOut(numberBetweenInOut).build())
.layer(new DenseLayer.Builder()
.nIn(numberBetweenInOut).nOut(numberBetweenInOut).build())
.layer(new OutputLayer.Builder()
.nIn(numberBetweenInOut).nOut(numberOutputs).build())
.build(); // Return a configuration based on this builder
// Build the model (neural network)
logger.info("Build model....");
MultiLayerNetwork model = new MultiLayerNetwork(configuration);
// Train the model
int numberEpoches = 1000;
int printIteration = 100;
model.setListeners(new ScoreIterationListener(printIteration));
for (int i = 0; i < numberEpoches; i++) {
model.fit(trainingData);
}
// Evaluate the model on the training set
Evaluation evaluation = new Evaluation(numberClasses);
INDArray output = model.output(trainingData.getFeatures());
evaluation.eval(trainingData.getLabels(), output);
logger.info(evaluation.stats());
// Evaluate the model on the test set
evaluation = new Evaluation(numberClasses);
output = model.output(testData.getFeatures());
evaluation.eval(testData.getLabels(), output);
logger.info(evaluation.stats());
} // main
} // class PropertyClassifier
Zusammenfassung:
Das DL4J-Framework (Deep Learning for Java Virtual Machine) stellt für Java ausgereifte Bibliotheken zu Verfügung, um Maschinelles Lernen inkl. Deep Learning mit Hilfe von Neuronalen Netzwerken zu implementieren. Der Installationsaufwand hält sich dabei in Grenzen.
Allerdings braucht der Erstanwender Beispiels-Quelltexte, um die Grundfunktionalität zu verstehen. Da das DL4J-Framework diese Beispiele aber mitliefert, steht der Entwicklung der ersten eigenen Anwendung nichts im Wege.
- 74 -