Bibliotheken: MLP Neuronales Netz Klasse - Seite 2

 
elibrarius:

Vergleicht man die Ergebnisse des Multiplikationstabellen-Trainings, so verliert Ihr Netz deutlich. Auf ALGLIB gibt das Netzwerk 2,5,1 für 100 Epochen Training(https://www.mql5.com/ru/forum/8265/page2) bessere Antworten als Ihres mit 1000000 Epochen. Auch die Geschwindigkeit der Berechnung von 10000000000 epochs ist nicht erfreulich.

Offenbar ist die Lernmethode nicht sehr effizient. Aber trotzdem - danke für deine Arbeit, sie ist in kleinem Code leichter zu verstehen als in ALGLIB. Aber da müssen wir uns noch hinbewegen.

falscher Vergleich, alle 100 Beispiele werden in der alglib-Variante zum Lernen gezeigt, deshalb sind die Antworten richtiger. ich denke, wenn man die Beispiele mit Antworten in alglib kürzt, werden die Ergebnisse nicht besser.

 

Hallo, ich schätze es sehr, dass Sie sich die Zeit genommen haben, diese native Bibliothek zu erstellen!

Ich habe versucht, eine heiße Kodierung zu tun und fügte relu zum versteckten und eine Softmax-Funktion zum Aufruf der Ausgabeschicht hinzu. Es funktioniert und liefert ein 100%iges Gesamtergebnis.

Aber das Training ging schief, auch wenn ich zurück zu Sigmoud wechselte. Ist iRprop für die Klassifizierung ungeeignet? Es gibt so ziemlich die gleiche Ausgabe, egal was die Eingabe ist. Es ändert sich manchmal, aber nicht viel.


Zweite Frage, ich sehe, dass Tanh und Sigmod in der Lern-Methode unterschiedlich behandelt werden, ich verstehe diesen Teil des Codes noch nicht, aber welcher ist für Relu geeignet?

 
Danke für diesen tollen Beitrag... Können Sie mir erklären, wie ich den zulässigen Fehler bestimmen kann?
 
northedan:
Danke für diesen tollen Beitrag... Können Sie mir erklären, wie ich den zulässigen Fehler bestimmen kann?
//+------------------------------------------------------------------+
//| Lernen|
//+------------------------------------------------------------------+
void CNetMLP::Learn(int c_npat,       // Anzahl der Lehrmuster
                    double &c_inp[],  // Eingabedaten
                    double &c_res[],  // Ausgabedaten
                    int c_nep,        // Anzahl der Lernepochen
                    double c_err)     // zulässiger Fehler