Die Klasse ProcessMonitoring ändert sich auch.
public class ProcessMonitoring {
public static double[] lastOutputs;
public static double[] lastOutputsFromHiddenLayer;
}
Der letzte Output wird nur noch inkl. der Aktivierungsfunktion gespeichert (also wird die Summenbildung nicht mehr dokumentiert) und die letzten Outputs vom Hidden-Layer werden auch gespeichert. Die Information über die Gewichtswerte ist direkt aus dem Neuronalen Netzwerk über die Methoden getWeightsOfOutputlayer() und getWeightsOfHiddenLayer() erhältlich.
Es kommt eine Klasse NetworkParameter hinzu, die die Hyperparameter über das Netzwerk enthält, nämlich die Anzahl der Eingabesignale, die Anzahl der Neuronen im Hidden-Layer und die Anzahl der Neuronen im Output-Layer.
public class NetworkParameter {
public static final int numberOfInputSignals = TrainingParameter.inputs[0].length;
public static final int numberOfNeuronsInHiddenLayer = TrainingParameter.inputs[0].length;
public static final int numberOfNeuronsInOutputLayer = TrainingParameter.targets[0].length;
}
Um die Ausgaben von der Logik zu trennen wird eine neue Klasse DisplayMachineLearning implementiert, die (fast) alle Ausgaben übernimmt.
public class DisplayMachineLearning {
public static void show(double[][] input, double[][] target) {
System.out.println("\ninputs and targets:");
for (int i = 0; i < input.length; i++) {
System.out.print("input " + (i + 1) + ": ");
for (int j = 0; j < input[0].length; j++)
System.out.print(input[i][j] + " ");
System.out.print(" target: ");
for (int j = 0; j < target[0].length; j++)
System.out.print(target[i][j] + " ");
System.out.println();
}
}
// weiter auf der nächsten Seite
- 39 -