Neuronale Netzwerke: Wie kann ich meinen Code verbessern?

1 Antwort

Vom Beitragsersteller als hilfreich ausgezeichnet

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.