Künstliche Intelligenz mit Java
Maschinelles Lernen mit Neuronalen Netzwerken

    // 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 -