Page 1 of 1

Exportieren des Net Errors

Posted: Thu 23. May 2013, 18:10
by Toddster
Hallo Zusammen, hallo Herr Jetter,

ist es möglich den Net Error Wert der in Membrain errechnet wird zu exportieren in eine csv Datei? Oder hilft da nur der Umweg, die Antworten des Netzes auf die vorgegebenen Muster zu exportieren und dann mit den Soll-Werten zu vergleichen?
Mein Skript durchläuft nämlich eine Vielzahl von Netzen und da wäre es irgendwie praktisch im Nachhinein noch einmal den Net Error anzuschaun, ohne ihn neu errechnen zu müssen.


Viele Grüße,

Toddster

Re: Exportieren des Net Errors

Posted: Fri 24. May 2013, 06:53
by TJetter
Hallo,

der Net Error kann während des Trainings durch eine Skript-Funktion 'GetNetError()' gelesen werden und damit könnte man ihn natürlich auch in eine Datei exportieren, durch Nutzung der file Klasse, die die Skriptsprache unterstützt (siehe MemBrain Hilfe, 'Abschnitt Scripting - Command Reference - Arbitrary File Access'.
Eine automatische Funktion gibt es dafür in MemBrain nicht.
Soll der Net Error als Verlauf in der Datei erscheinen oder geht es nur um den letzten Wert nach Ende des Trainings?

Viele Grüße

Re: Exportieren des Net Errors

Posted: Fri 24. May 2013, 12:10
by Toddster
Hallo,

vielen Dank für die Antwort. Es geht mir nur um den letzten Wert am Ende des Trainings. Ich werds mal versuchen damit.

Viele Grüße

Re: Exportieren des Net Errors

Posted: Tue 25. Jun 2013, 15:57
by Toddster
Hallo,

also es klappt alles soweit, allerdings schaffe ich es nur Strings in eine .csv Datei zu schreiben. Sobald ich Zahlenwerte, wie Integer oder double schreiben möchte, erscheinen irgendwelche Sonderzeichen in meiner .csv Datei. Im Moment behelfe ich mir so, dass ich die Zahlenwerte in einen String umwandle und das funktioniert dann.
Ich würde mir diesen Schritt aber gerne sparen. Wo liegt mein Fehler?

Viele Grüße

Re: Exportieren des Net Errors

Posted: Tue 25. Jun 2013, 22:10
by TJetter
Hallo,
Toddster wrote:Ich würde mir diesen Schritt aber gerne sparen. Wo liegt mein Fehler?
Es liegt gar kein Fehler vor, das ist genau das Vorgehen, dass umgesetzt werden muss (Umwandlung in String).
Wenn man einen double oder int in die Datei schreibt, dann landet dieser auch genau so (also in binärem Format) in der Datei. Genau das ist der Sinn des binären Schreibens in die Datei. Solch eine Datei kann man natürlich in einem Texteditor nicht sinnvoll darstellen, man müsste sie genauso binär wieder auslesen.
Eine CSV-Datei ist eine Textdatei. Deshalb macht hier auch nur das Schreiben voin Strings Sinn.

Viele Grüße

Re: Exportieren des Net Errors

Posted: Thu 27. Jun 2013, 14:58
by Toddster
Hallo,

vielen Dank für die Antwort. Ich habe noch eine Frage zum Net Error. Und zwar ist mir aufgefallen, dass der Net Error, welcher am Ende eines Trainingsvorgangs angezeigt wird nicht immer mit dem identisch ist, welchen ich angezeigt bekomme, nachdem ich die Funktion "EvaluateNetError" genutzt habe. Was ist die Ursache dafür?

Viele Grüße

Re: Exportieren des Net Errors

Posted: Thu 27. Jun 2013, 19:59
by TJetter
Toddster wrote:Was ist die Ursache dafür?
Um das zu verstehen, muss man wissen, was 'Evaluate Net Error' macht:
Die Funktion legt alle Pattern aus der momentanen 'Net Error Lesson' an das Netz an, berechnet für jedes dieser Pattern den Netz-Output und zusammen mit den jeweiligen Sollwerten den Net Error.

Was nun Abweichungen zum angezeigten Net Error nach dem Training verursachen kann:
1.) Wenn ein zeitvariantes Netz verwendet wird, dann wird generell jeder Berechnungsdurchlauf im Ergebnis potentiell anders sein, als der vorherige, da das Netz ja auch interne Zustände in die Berechnung der nächsten Schritte mit einbezieht.
2.) Wenn die 'Net Error Lesson' gleich der 'Training Lesson' ist (siehe Auswahl im Lesson Editor) und im verwendeten Teacher die Option 'Use On-The-Fly Net Error Calculation' angehakt ist, dann nimmt der Teacher während des Trainings eine vereinfachende 'Abkürzung' zur Berechnung des Net Errors: Der Net Error wird dann während des eigentlichen Trainingsdurchlaufs bereits als Summe über alle Pattern berechnet. Es wird also nicht anschließend an jeden Lesson-Durchlauf nochmal ein separater Durchlauf zur Ermittlung des Net Errors durchgeführt. Das hat zur Folge, dass der Net Error nicht ganz der Wahrheit entspricht, weil sich das Netz während der Aufsummierung ja durch den Teacher stetig ändert. Dafür ist es schneller.

Ich hoffe, damit lässt sich die Abweichung im vorliegenden Fall erklären?

Viele Grüße