an unnamed file was not found

Haben Sie Fragen zur Bedienung bestimmter Features von MemBrain? Sind Sie nicht sicher, welches Häkchen was bewirkt? Möchten Sie wissen, ob eine bestimmte Funktionalität in MemBrain vorhanden ist oder nicht?

Dann stellen Sie Ihre Fragen hier!
Tuefftler
Posts: 25
Joined: Mon 9. Dec 2013, 19:40

an unnamed file was not found

Post by Tuefftler » Thu 12. Dec 2013, 17:05

Hallo Thomas,

wenn ich Training und Validierung manuell "besorge" klappt alles prima.

Aber ich scheitere gerade an der Automatisierung des Netz-Trainings inkl. Validierung mit Hilfe Deines Scriptes TrainValidate.as.
Egal wie ich es anstelle - immer kommt die Fehlermeldung "an unnamed file was not found".

Das Netz wird zwar geladen, aber dann kommt schon die oben genannte Fehlermeldung.
Das Script SecondsTimer.as habe ich in ein Unterverzeichnis des Verzeichnisses getan,
aus dem ich die TrainValidate.as starte. Dort wo die TrainValidate.as liegt, dort liegen auch das Netz und die Trainings- und Validierungsdaten.
Habe auch eine leere ValidationResult.csv in diesem Verzeichnis angelegt.

Interessant ist, dass die Fehlermeldung "Encountered an improper argument" kommt, wenn ich versuche in das vom Script geladene Netz manuell per "raw csv files"
die Trainingsdaten einzulesen. Das scheint damit zusammen zu hängen, dass sich offenbar der Lesson Editor die Spalten-Überschriften aus dem Netz geholt hat und
dass die Neuronen im Netz in anderer Reihenfolge als in der csv-Datei angeordnet sind.

Wenn ich Membrain aber nicht vom Script starten lasse, sondern es von Hand starte und dann die Training-Daten per "raw csv files" einlese, dann ist alles gut.
Dann klappt das Training und die Validierung - wie ich ja oben schon geschrieben habe.

Habe Dir im angehängten Zip-File mal alles reingepackt, was ich im Zusammenhang mit TrainValidate.as verwenden will.
Auch ein Screenshot von der Fehlermeldung ist mit dabei. Der Screenshot heisst "an unnamed file was not found.rtf".

Wäre schön, wenn Du bei Gelegenheit 'mal nachschauen könntest, was da klemmt. Vielen Dank.

Viele Grüße
Harry
Attachments
Netze.zip
Screenshot, Netz und Scripte und CSV-Files sind hier drin
(529.59 KiB) Downloaded 221 times

User avatar
TJetter
Posts: 306
Joined: Sat 13. Oct 2012, 12:04

Re: an unnamed file was not found

Post by TJetter » Thu 12. Dec 2013, 17:26

Tuefftler wrote:Habe Dir im angehängten Zip-File mal alles reingepackt, was ich im Zusammenhang mit TrainValidate.as verwenden will.
Stimmt leider nicht ganz, das Netz 'aktuell.mbn' findet sich nicht im zip file. Das benötige ich zur Analyse auch.

Viele Grüße
Thomas Jetter

User avatar
TJetter
Posts: 306
Joined: Sat 13. Oct 2012, 12:04

Re: an unnamed file was not found

Post by TJetter » Thu 12. Dec 2013, 17:32

Sehe gerade trotz des fehlenden Netzes schon, wo das Problem liegt:

Im Skript steht die Zeile

Code: Select all

LoadLesson(sValidateLessonName);
Das ist die falsche Skriptfunktion für CSV Dateien (sie gilt nur für mbl-Dateien, also für das native Lesson-Format von MemBrain)
Für Roh-CSV Dateien muss es heißen:

Code: Select all

ImportLessonRaw(sValidateLessonName);
Analog dazu gilt das natürlich auch für die Trainings-Lesson.

Das wird allerdings nur gut gehen, wenn im Lesson-Editor bereits die korrekte, zum Netz passende Anzahl an Inputs und Outputs eingestellt ist.
Das kann im Skript über den Aufruf von

Code: Select all

NamesFromNet();
gemacht werden, nachdem das Netz geladen wurde und bevor der CSV Import stattfindet.

Damit sollte es klappen, ansonsten bitte nochmal melden.

Bzgl. der ausgegebenen Fehlermeldung: Diese ist zugegebenermaßen nicht sehr zielführend. Ich werde versuchen, hier in einer der nächsten MemBrain Versionen nachzubessern.

Viele Grüße
Thomas Jetter

Tuefftler
Posts: 25
Joined: Mon 9. Dec 2013, 19:40

Re: an unnamed file was not found

Post by Tuefftler » Fri 13. Dec 2013, 11:59

Hallo Thomas,

bitte um Entschuldigung für das fehlende Netz - diesmal ist es mit dabei.
Und vielen Dank für die schnelle Antwort.

Habe das Script entsprechend Deinen Anweisungen geändert.

Der Import geht daraufhin aber leider immer noch nicht.
Jetzt lautet die Fehlermeldung des Script Trace:
"User Abort
Details: Unable to import raw csv lesson file Validation.csv
Script execution finished."

Ich habe alles, auch die Fehlermeldung vom Script Trace, nochmal in ein ZIP-file gepackt und hier angehängt.

Vielen Dank und viele Grüße
Harry
Attachments
Netze.zip
(622.33 KiB) Downloaded 220 times

User avatar
TJetter
Posts: 306
Joined: Sat 13. Oct 2012, 12:04

Re: an unnamed file was not found

Post by TJetter » Fri 13. Dec 2013, 15:31

Hallo,

die Ursache ist, dass die Datei 'Validation.csv' eine Spalte weniger hat als entsprechend der Netz-Inputs und -Outputs erwartet:
In der CSV Datei fehlt die Spalte 'Close_Future[2]' für das zweite Output Neuron.

Das funktioniert aber auch händisch in MemBrain dementsprechend nicht, MemBrain gibt beim Versuch, die Datei im Lesson Editor über Raw Import einzulesen die korrekte Fehlermeldung 'Mismatch between...'.

Viele Grüße,
Thomas
Thomas Jetter

Tuefftler
Posts: 25
Joined: Mon 9. Dec 2013, 19:40

Re: an unnamed file was not found

Post by Tuefftler » Sat 14. Dec 2013, 19:19

Hallo Thomas,

Oweh, wie peinlich, dass ich Dir mit solchen Leichtsinnsfehlern Arbeit mache.
Das tut echt weh.

Hatte beim manuellen Test ein anderes Netz verwendet - natürlich ohne Output-Neuron "Close_Future[2]".

Also entschuldige bitte nochmal - es klappt jetzt alles ganz wunderbar. Vielen Dank.

Beim Erstellen der DLL brauche ich sicherlich auch nochmal Deine Hilfe.
Aber über Weihnachten bist du wahrscheinlich eher Skifahren oder sonstwie privat engagiert, oder?

Viele Grüße
Harry

Tuefftler
Posts: 25
Joined: Mon 9. Dec 2013, 19:40

Re: an unnamed file was not found

Post by Tuefftler » Sat 14. Dec 2013, 21:56

Hallo Thomas,

ich hab' auch gleich noch 'ne Frage zum Script TrainValidate.as.

Ich lasse dieses Script mehrere Male mit demselben Netz und denselben Trainings- und denselben Validation-Daten und mit der exakt gleichen Trainingszeit von 4 Sekunden laufen
und vergleiche dann die Vorhersagegüte dieser verschiedenen Läufe.

Dabei stelle ich fest, dass die Güte jeweils ziemlich unterschiedlich ausfällt. Liegt das daran,
dass die Güte total abhängig vom Randomizen des Netzes ist, oder woran liegt das?

Viele Grüße
Harry

Tuefftler
Posts: 25
Joined: Mon 9. Dec 2013, 19:40

Re: an unnamed file was not found

Post by Tuefftler » Sat 14. Dec 2013, 22:51

Hallo Thomas,

wie muss ich das Script TrainValidate.as denn ändern, wenn ich
ein Netz mit sehr guter Vorhersagegüte nicht neu randomizen und trainieren will, sondern dieses trainierte Netz mit anderen Validation-Daten validieren möchte?

Viele Grüße
Harry

Tuefftler
Posts: 25
Joined: Mon 9. Dec 2013, 19:40

Re: an unnamed file was not found

Post by Tuefftler » Sat 14. Dec 2013, 23:24

ich glaub', ich hab's alleine hinbekommen das TrainValidate.as entsprechend zu ändern.
Ich hab meine Änderung mal angehängt.

Viel Grüße
Harry
Attachments
TrainValidate mit trainiertem Netz.as
(7.73 KiB) Downloaded 226 times

User avatar
TJetter
Posts: 306
Joined: Sat 13. Oct 2012, 12:04

Re: an unnamed file was not found

Post by TJetter » Sun 15. Dec 2013, 11:16

Sieht gut aus, das angepasste Script, sollte so funktionieren. Getestet habe ich es nicht.
Über Weihnachten bin ich grundätzlich auch erreichbar, viel Zeit wird da allerdings nicht bleiben.
Tuefftler wrote:Beim Erstellen der DLL brauche ich sicherlich auch nochmal Deine Hilfe.
Die DLL muss man bei MemBrain nicht erstellen. Es ist nicht so, dass MemBrain aus jedem Netz eine DLL erzeugt. Vielmehr kann man mit der MemBrain DLL erstellte Netze laden und in einer eigenen Anwendung verwenden. Ebenso kann man Lessons laden, CSV Dateien importieren, exportieren etc.

Die DLL Befehle sind dabei sehr ähnlich wie die Skript-Befehle. Zwei wichtige Unterschiede gibt es allerdings:
1.) Die DLL arbeitet überall mit 0-basierten Indizes, während das Scripting mit 1-basierten Indizes arbeitet.
Beispiel:
Skript-Aufruf:
LoadLesson(1);
entspricht DLL-Aufruf:
_MB_LoadLesson(0);

2.) Die DLL erlaubt das Laden von mehreren Netzen zur gleichen Zeit. Das aktive Netz kann man dabei mit der DLL-Funktion _MB_SelectNet() auswählen.

Viele Grüße und viel Erfolg
Thomas Jetter

Post Reply