Die Implementierung des Neuronalen Netzwerkes enthält die folgenden Klassen:
Für die zwei Anwendungsbeispiele im nächsten Kapitel kommen noch die Klassen für die Trainingsdaten hinzu:
LogicalAndData und VeryShortData.
Die gesamte Software findet sich unter: https://github.com/Ehlert99/DeepLearning
Die zentrale Klasse FeedForwardNetwork besteht aus den in diesem Kapitel besprochenen Methoden:
import java.util.ArrayList;
import java.util.Random;
public class FeedForwardNetwork {
private double[] inputLayer;
private ArrayList<Neuron> hiddenLayer;
private ArrayList<Neuron> outputLayer;
public FeedForwardNetwork(...) {...}
private void builtHiddenLayer(...) {...}
private void builtOutputLayer(...) {...}
public void setWeightsOfHiddenLayer() {...}
public double[][] getWeightsOfHiddenLayer() {...}
public void setWeightsOfOutputLayer() {...}
public double[][] getWeightsOfOutputLayer() {...}
public void calculateOutput(...) {...}
private void setInputLayer (...) {...}
private void calculateOutputFromHiddenLayer(...) {...}
private void calculateOutputFromOutputLayer() {...}
public void trainWithSupervisedLearning() {...}
private double calculateTotalError(...) {...}
private void makeBackPropagationForOutputLayer(...) {...}
public void testAllTrainingsdataAndShowResults() {...}
public void testAllTestdataAndShowResults() {...}
private void testAllInputsAndShowResults(...) {...}
private boolean isNotABiasWeight(...) {...}
private void makeBackPropagationForHiddenLayer(...) {...}
private double calculateDeltaW(...) {...}
private void setBias(...) {...}
}
Hinweis: Diese Klasse sollte einem Refactoring unterzogen werden (z.B. Aufteilung in mehrere Klassen), damit sie "cleaner" wird.
- 48 -