Bug in ScritedElements?
Re: Bug in ScritedElements?
Leider scheitere ich bislang an der Reproduktion des Fehlers, trotz Tests mit und ohne "Scripted Elements" und mit verschiedenen Netzen/Lessons.
--> Es wäre klasse, ein konkretes Beispiel zu bekommen (Netz + Lesson(s)).
Idealerweise zusammen mit einer Kopie von Settings.cfg und Teachers.mbt aus dem Verzeichnis:
C:\Users\<User>\AppData\Roaming\MemBrain\Config
Wobei <User> Ihr Windows Login-Name ist.
(Die Dateien enthalten keinerlei persönliche Informationen, damit kann ich aber exakt Ihre Einstellungen testen).
Vielen Dank schonmal vorab!
--> Es wäre klasse, ein konkretes Beispiel zu bekommen (Netz + Lesson(s)).
Idealerweise zusammen mit einer Kopie von Settings.cfg und Teachers.mbt aus dem Verzeichnis:
C:\Users\<User>\AppData\Roaming\MemBrain\Config
Wobei <User> Ihr Windows Login-Name ist.
(Die Dateien enthalten keinerlei persönliche Informationen, damit kann ich aber exakt Ihre Einstellungen testen).
Vielen Dank schonmal vorab!
Thomas Jetter
Re: Bug in ScritedElements?
Guten Abend,
ich habe eben mal ein wenig experimentiert um das Verhalten nachzustellen und bin glaube ich auch fündig geworden.
Schritte zur Reproduktion:
1. Netz und Scripted Elements s. Screenshot (NetError Function Configuration: Alles auf "UserDefined (Scipted)" und "Use Normalized Values" aus).
2. "Capture Best Net" einschalten
3. Dann das Training für kurze Zeit manuell starten und wieder stoppen.
4. Im NetErrorGraph und im Stockmanager steht als NetError der gleiche Wert. Also so wie es sein soll, weil der NetError aufgrund des Scriptprogramms immer kleiner wird.
5. Dann "Evaluate Net Error" drücken. Dann wird auf einmal ein anderer NetError berechnet, obwohl das nach meinem Verständnis nicht so sein sollte. In meinem Screenshot sieht man das an der grünen senkrechten Linie im "NetError Graph", die vor dem Drücken von "Evaluate Net Error" noch nicht da war.
Ob man Multithreading ein- oder ausschaltet macht hierbei diesmal keinen Unterschied.
Viele Grüße
MrNo
ich habe eben mal ein wenig experimentiert um das Verhalten nachzustellen und bin glaube ich auch fündig geworden.
Schritte zur Reproduktion:
1. Netz und Scripted Elements s. Screenshot (NetError Function Configuration: Alles auf "UserDefined (Scipted)" und "Use Normalized Values" aus).
2. "Capture Best Net" einschalten
3. Dann das Training für kurze Zeit manuell starten und wieder stoppen.
4. Im NetErrorGraph und im Stockmanager steht als NetError der gleiche Wert. Also so wie es sein soll, weil der NetError aufgrund des Scriptprogramms immer kleiner wird.
5. Dann "Evaluate Net Error" drücken. Dann wird auf einmal ein anderer NetError berechnet, obwohl das nach meinem Verständnis nicht so sein sollte. In meinem Screenshot sieht man das an der grünen senkrechten Linie im "NetError Graph", die vor dem Drücken von "Evaluate Net Error" noch nicht da war.
Ob man Multithreading ein- oder ausschaltet macht hierbei diesmal keinen Unterschied.
Viele Grüße
MrNo
- Attachments
-
- MembrRepr1.PNG
- (111.35 KiB) Not downloaded yet
Re: Bug in ScritedElements?
P.S.: Sorry, hatte Ihren letzten Beitrag mit der Anfrage nach den Settings nicht gesehen. Falls doch noch benötigt, bitte nochmal melden.
Re: Bug in ScritedElements?
Hallo und Danke für die Mühe und das Beispiel!
Allerdings handelt es sich hier nicht um einen eigentlichen Fehler von MemBrain:
1.) Das "Scripted Elements" File im Beispiel enthält eine globale Variable <cnt>.
2.) Das "Scripted Elements" File wird von MemBrain als Programm-Modul beim Start des Trainings oder auch beim Aufruf der Funktion <Evaluate Net Error> jeweils compiliert und neu geladen. Dabei werden alle globalen Variablen allokiert und initialisiert.
Eine globale Variable über mehrere Trainingsschritte im Scripted Elements File zu nutzen, ohne diese nach jeder Net Error Berechnung neu zu initialisieren, macht deshalb keinen Sinn: Damit wird ja die Berechnung des Net Errors abhängig von der Vorgängerberechnung.
Das Scriptmodul vor jedem Trainingsschritt immer neu zu laden, macht wiederum aus Performance-Gründen keinen Sinn. Deshalb compiliert und lädt MemBrain das Script beim "Auto Teach" nur einmal beim Start.
Aus diesem Grund muss man beim Verwenden von globalen Variablen diese immer am Ende der Funktion <CalculateNetError> explizit neu initialisieren.
In Ihrem konkreten Beispiel ergäbe sich damit natürlich ein konstanter Net Error, das Beispiel ist ja aber ohnehin nur theoretischer Natur.
Zugegebenermaßen könnte man das bei nächster Gelegenheit in die MemBrain Hilfe mit aufnehmen![Wink ;-)](./images/smilies/icon_e_wink.gif)
Viele Grüße,
Thomas
Allerdings handelt es sich hier nicht um einen eigentlichen Fehler von MemBrain:
1.) Das "Scripted Elements" File im Beispiel enthält eine globale Variable <cnt>.
2.) Das "Scripted Elements" File wird von MemBrain als Programm-Modul beim Start des Trainings oder auch beim Aufruf der Funktion <Evaluate Net Error> jeweils compiliert und neu geladen. Dabei werden alle globalen Variablen allokiert und initialisiert.
Eine globale Variable über mehrere Trainingsschritte im Scripted Elements File zu nutzen, ohne diese nach jeder Net Error Berechnung neu zu initialisieren, macht deshalb keinen Sinn: Damit wird ja die Berechnung des Net Errors abhängig von der Vorgängerberechnung.
Das Scriptmodul vor jedem Trainingsschritt immer neu zu laden, macht wiederum aus Performance-Gründen keinen Sinn. Deshalb compiliert und lädt MemBrain das Script beim "Auto Teach" nur einmal beim Start.
Aus diesem Grund muss man beim Verwenden von globalen Variablen diese immer am Ende der Funktion <CalculateNetError> explizit neu initialisieren.
In Ihrem konkreten Beispiel ergäbe sich damit natürlich ein konstanter Net Error, das Beispiel ist ja aber ohnehin nur theoretischer Natur.
Zugegebenermaßen könnte man das bei nächster Gelegenheit in die MemBrain Hilfe mit aufnehmen
![Wink ;-)](./images/smilies/icon_e_wink.gif)
Viele Grüße,
Thomas
Thomas Jetter
Re: Bug in ScritedElements?
Ok, verständlich. Ich hatte die globale Variable nur genutzt, um den Net-Error irgendwie immer kleiner werden zu lassen.
In meinem eigentlichen Script, bei dem ich das Problem mit der Net-Errror Berechnung gesehen habe, verwende ich keine solche globalen Variablen.
Ich schaue noch mal, ob ich es anders reproduzieren kann und würde mich dann noch einmal melden.
Vielen Dank!
In meinem eigentlichen Script, bei dem ich das Problem mit der Net-Errror Berechnung gesehen habe, verwende ich keine solche globalen Variablen.
Ich schaue noch mal, ob ich es anders reproduzieren kann und würde mich dann noch einmal melden.
Vielen Dank!
Re: Bug in ScritedElements?
So, nächster Versuch.
Ich habe nun folgendes gemacht, und zwar ganz ohne Scripte.
(Daten dazu siehe angehängte Zip):
Vorbereitung Netz:
- test.mbn und Lesson1.csv geladen.
- keine scripted Elements (s. Screenshot "Setup.PNG")
- Stock Capture Ein, Multithreading diesmal aus.
Test:
Dann StartTeacher im Menu gedrückt und nach kurzer Zeit wieder beendet. Nun den Stock Manager aufgemacht (siehe Screenshot "1.PGN"). Wie man sieht, gibt es keinen Unterschied beim NetError.
Nun habe ich aus dem Stockmanager das beste (und in diesem Fall einzige) Netz geladen und dann "Evaluate Net Error" gedrückt. Wie man in Screenshot "2.PGN" sieht, ist der Net-Error nun auf einmal ein anderer, zumindest in den hinteren Nachkommastellen. Das dürfte doch eigentlich nicht sein, oder?
Ich habe nun folgendes gemacht, und zwar ganz ohne Scripte.
(Daten dazu siehe angehängte Zip):
Vorbereitung Netz:
- test.mbn und Lesson1.csv geladen.
- keine scripted Elements (s. Screenshot "Setup.PNG")
- Stock Capture Ein, Multithreading diesmal aus.
Test:
Dann StartTeacher im Menu gedrückt und nach kurzer Zeit wieder beendet. Nun den Stock Manager aufgemacht (siehe Screenshot "1.PGN"). Wie man sieht, gibt es keinen Unterschied beim NetError.
Nun habe ich aus dem Stockmanager das beste (und in diesem Fall einzige) Netz geladen und dann "Evaluate Net Error" gedrückt. Wie man in Screenshot "2.PGN" sieht, ist der Net-Error nun auf einmal ein anderer, zumindest in den hinteren Nachkommastellen. Das dürfte doch eigentlich nicht sein, oder?
- Attachments
-
- Beispiel.zip
- (157.4 KiB) Downloaded 386 times
Re: Bug in ScritedElements?
Hallo,
hier noch die Teachers.mbt und Settings.cfg um das in meinem letzten Post beschriebene Verhalten nachzuvollziehen, falls benötigt.
viele Grüße
hier noch die Teachers.mbt und Settings.cfg um das in meinem letzten Post beschriebene Verhalten nachzuvollziehen, falls benötigt.
viele Grüße
- Attachments
-
- Teachers.mbt
- (201 Bytes) Downloaded 369 times
-
- Settings.cfg
- (1.15 KiB) Downloaded 390 times
Re: Bug in ScritedElements?
Hallo und noch ein frohes neues Jahr,
ich habe eben ein Update auf die letzte Version 11.06 durchgeführt und sie einmal ausprobiert.
Das in meinem Post vom 18.12.2020 beschriebene Verhalten, dass der angezeigte NetError im Stockmanager ein anderer ist, als wenn ich das Netz dann noch einmal aus dem Stockmanager lade und EvaluateNetError drücke, ist aber so geblieben. Das ist doch nicht richtig, oder übersehe ich etwas? (ich hoffe, ich bin nicht zu nervig)
In meinem Beispiel vom 18.12 sind es nur die hinteren Nachkommastellen, bei meinem eigentlichen Netz mit Scripted Elements sind aber alle Stellen betroffen. Das Netz was ich aus dem Stock lade ist immer schlechter als das was im StockManager anzeigt wird. Der Wert der im Stockmanager angezeigt wird, scheint mir aber plausibel für das beste Netz eines Trainings, nur wird es scheinbar nicht weggespeichert sondern ein anderes!?
Viele Grüße
ich habe eben ein Update auf die letzte Version 11.06 durchgeführt und sie einmal ausprobiert.
Das in meinem Post vom 18.12.2020 beschriebene Verhalten, dass der angezeigte NetError im Stockmanager ein anderer ist, als wenn ich das Netz dann noch einmal aus dem Stockmanager lade und EvaluateNetError drücke, ist aber so geblieben. Das ist doch nicht richtig, oder übersehe ich etwas? (ich hoffe, ich bin nicht zu nervig)
![Wink ;)](./images/smilies/icon_e_wink.gif)
In meinem Beispiel vom 18.12 sind es nur die hinteren Nachkommastellen, bei meinem eigentlichen Netz mit Scripted Elements sind aber alle Stellen betroffen. Das Netz was ich aus dem Stock lade ist immer schlechter als das was im StockManager anzeigt wird. Der Wert der im Stockmanager angezeigt wird, scheint mir aber plausibel für das beste Netz eines Trainings, nur wird es scheinbar nicht weggespeichert sondern ein anderes!?
Viele Grüße
Re: Bug in ScritedElements?
Hallo,
leider bin ich vom Forum nicht über den Post informiert worden und sehe ihn gerade jetzt erst, das tut mir sehr leid! Allzu oft funktioniert das "Abonnement" im Forum leider nicht, ich habe noch nicht rausgefunden, woran das liegen könnte.
Ich werde mir die Dateien möglichst bald ansehen.
Und nervig ist das gar nicht, nein! Ich bin froh über solche Rückmeldungen, nur auf diese Weise kann ich Fehlern auf die Spur kommen und die SW kontinuierlich verbessern, vielen Dank!
Viele Grüße,
leider bin ich vom Forum nicht über den Post informiert worden und sehe ihn gerade jetzt erst, das tut mir sehr leid! Allzu oft funktioniert das "Abonnement" im Forum leider nicht, ich habe noch nicht rausgefunden, woran das liegen könnte.
Ich werde mir die Dateien möglichst bald ansehen.
Und nervig ist das gar nicht, nein! Ich bin froh über solche Rückmeldungen, nur auf diese Weise kann ich Fehlern auf die Spur kommen und die SW kontinuierlich verbessern, vielen Dank!
Viele Grüße,
Thomas Jetter
Re: Bug in ScritedElements?
Hallo, da bin ich wieder,
ja, ich kann die Sache nun nachvollziehen, Danke! Und ich entschuldige mich nochmal für die späte Reaktion auf den Post.
Ich schaue mir die Sache so bald wie möglich genauer an und kann dann hoffentlich schnell einen Fix liefern.
Viele Grüße,
ja, ich kann die Sache nun nachvollziehen, Danke! Und ich entschuldige mich nochmal für die späte Reaktion auf den Post.
Ich schaue mir die Sache so bald wie möglich genauer an und kann dann hoffentlich schnell einen Fix liefern.
Viele Grüße,
Thomas Jetter