Ich habe ein neuronales Netzwerk (mit CUDA) mit 2 Schichten implementiert. (2 Neuronen pro Schicht). Ich versuche, 2 einfache quadratische Polynomfunktionen mithilfe der Backpropagation zu lernen .
Aber anstatt zu konvergieren, divergiert es (die Ausgabe wird unendlich)
Hier sind einige weitere Details zu dem, was ich versucht habe:
- Ich hatte die Anfangsgewichte auf 0 gesetzt, aber da es divergierte, habe ich die Anfangsgewichte randomisiert (Bereich: -0,5 bis 0,5).
- Ich habe gelesen, dass ein neuronales Netzwerk möglicherweise abweicht, wenn die Lernrate zu hoch ist, und habe die Lernrate auf 0,000001 reduziert
- Die zwei Funktionen, die ich zum Hinzufügen bringen möchte, sind: 3 * i + 7 * j + 9 und j * j + i * i + 24 (ich gebe die Ebene i und j als Eingabe)
- Ich hatte es zuvor als einzelne Schicht implementiert und das könnte die Polynomfunktionen besser approximieren als jetzt
- Ich denke darüber nach, Momentum in diesem Netzwerk zu implementieren, bin mir aber nicht sicher, ob es beim Lernen helfen würde
- Ich benutze eine lineare (wie in no) Aktivierungsfunktion
- Am Anfang gibt es eine Schwingung, aber der Ausgang beginnt zu divergieren, sobald eines der Gewichte größer als 1 wird
Ich habe meinen Code überprüft und erneut überprüft, aber es scheint kein Problem damit zu geben.
Hier ist meine Frage: Was läuft hier falsch?
Jeder Zeiger wird geschätzt.