Neuronale Netzwerke: Wie kann ich meinen Code verbessern?
Mein Code:
Ich habe vor, ein Neuronales Netz in Java zu entwickeln. Schön und gut.
Mein Problem:
Immer wenn ich etwas am Netzwerk verändere, muss ich alle Zahlen neu Tippen. Gibt es eine Möglichkeit das zu ändern?
"neurons" ist eine Liste mit Neuronen,
die Compute-Funktion in einem "Neuron" schluckt sechs doubles und gibt ein double zurück.
Danke für jede Hilfe, um den Code zu verbessern.
Am besten wäre es, wenn ich sage: 4 Layer - dann wird der Code abgegangen.
LG
1 Antwort
Zuallererst wäre es gut, wenn die compute-Methode auch ein Array überreicht bekommen könnte, denn auf diese Weise lässt sich der Code deutlich verkürzen. Wenn die Methode nicht von dir definiert wurde, kann man auch fix eine Helfermethode ergänzen:
private double compute(int index, double... values) {
return neurons.get(index).compute(values[0], values[1], /* etc. ... */);
}
Für die Berechnung kannst du ebenenweise vorgehen. Die einzelnen Werte je Ebene können in einem Zwischenschritt erst in einem Array gespeichert werden.
Der erste Zug wäre somit die Berechnung aller Werte von 0-215, der zweite Zug sieht die Indizes 216-251 vor und dem folgen die Indizes 252-257. Damit du keine konkreten Zahlen für die Indexbereiche vorgeben musst, rechnest du sie einfach mittels Math.pow aus:
Ebene 3:
6 ^ 3 = 216 Indexbereich: 0 <= i < 216
Ebene 2:
6 ^ 2 = 36 Indexbereich: 216 <= i < 216 + 36
Ebene 1:
6 ^ 1 = 6 Indexbereich: 216 + 36 <= i < 216 + 36 + 6
Für die Übergabe an compute (bei Ebenen über der untersten Ebene) kann man sich immer in Sechserschritten ein temporäres Array zusammenbauen.