MemBrain Neural Network Editor + Simulator User Forum
Für deutschsprachige Benutzer: Die Default-Sprache des Boards ist englisch. Bei der Registrierung kann die Boardsprache auf deutsch umgestellt werden! Für englische und deutsche Beiträge gibt es getrennte Forenbereiche.
Haben Sie Verbesserungsvorschläge oder Wünsche für eine neue MemBrain-Version? Haben Sie einen Bug entdeckt, der behoben werden sollte? Möchten Sie einfach nur eine positive oder negative Bewertung hinterlassen?
Dann ist dieses Forum der richtige Platz, um Ihren Beitrag einzubringen.
ich wollte mich mal nützlich für die Gesellschaft machen und hier eine Sache anmerken und einen Verbesserungsvorschlag angeben.
Verbesserung: wenn man in Membrain etwas lädt (Lessons z.B.) dann startet das Ladefenster immer im Stammordner von Membrain. Ich speichere die Lessons aber immer im selben Ordner wie die *.mbn Ginge es, dass man immer in dem Ordner startet, in dem die *.mbn liegt?
Ich lade öfter mal verschiedene Lessons in den Lesson Editor und muss mich immer ewig durch klicken (mein Dateisystem ist verwinkelter als das Labyrinth in Knossos
Klar ist nur ne Kleinigkeit und auch nur sinnvoll, wenn das Ausbessern schnell geht und auch vom Rest erwünscht wird.
Die Anmerkung: wenn ich über das Beispielskript (von der Homepage) versuche die "Think on Lesson" Funktion zu nutzen, dann stürzt das Programm immer ab und es kommt die Fehlermeldung, die ich an den Thread angehängt habe. Und das egal auf welchem Rechner ich Membrain installiere. Echt komisch
Die Sache mit den Dateipfaden beim Öffnen im Lesson-Editor macht definitiv Sinn. Das werde ich für die nächste Version vormerken: Wenn ein Netz geladen ist, dann sollte der Lesson-Editor beim Öffnen von Dateien am besten auch diesen Pfad als Default verwenden.
Die Fehlermeldung kann ich allerdings bei mir nicht nachvollziehen. Verwendest Du die aktuelle MemBrain Version 03.02.00.01?
Es gab einen Bug, der das von Dir beobachtete Verhalten erklären würde, der wurde aber bereits in der Version 03.01.04.00 behoben.
Kannst Du mir das betreffende Skript einmal zusenden oder es posten zusammen mit einer genauen Beschreibung, wie der Fehler zu reproduzieren ist? Auch die Dateien, die Dein Skript verwendet, sollten dabei sein.
die neue MemBrain-Version, die gerade online gegangen ist, enthält u.a. auch Deinen Vorschlag bzgl. der Default-Pfade im Lesson-Editor.
Leider konnte ich wegen des von Dir beobachteten Bugs noch nichts unternehmen, da ich ihn wie gesagt bei mir nicht reproduzieren kann. Kannst Du dazu nochmals Details posten, bitte?
sorry dass ich mich jetzt erst melde. Ich muss noch einmal die neuste Version in der Uni installieren. Dann kann ich dir sagen, ob das Problem behoben ist. Werde ich hoffentlich die Tage schaffen. Bin als Studienberater gerade ordentlich eingespannt
Aber ich melde mich sobald ich die neuste Version ausprobiert habe!
so ich habe die neuste Version installiert und es klappt immer noch nicht. Ich poste mal die Dateien als zip File. Anders lässt er sie mich nicht hoch laden.
Also die Fehlerbeschreibung:
Ich führe das Skript "skriptexample.txt" aus, was nur das auf der Homepage angebotene Beispiel ist, das ich noch angepasst habe. In der ursprünglichen Datei stand "think_on_lessen" um die Ergebnisse dann in der Datei "ValidateResult.csv" zu speichern. Sobald er aber zu dem Schritt kommt stürzt er auf meinem Rechner, und auch auf dem bei mir zu Hause und denen in der Arbeit ab. Auch mit der neusten Membrain Version vom 24.11. Jetzt lasse ich ihn einfach 8 Sekunden warten und klicke mich einfach mit "Think on next input" durch.
Wichtig ist noch, dass du falls du den Grenzwert für den Fehler nicht herunter stellt den Lernprozess per Hand abschalten musst (Stop teacher). Das habe ich gemacht, weil ich das so ganz gut im Gefühl hatte wann er noch generalisieren kann und bis zu welcher Grenze er auswendig lernt.
mit Deinen Dateien konnte ich den Fehler jetzt nachvollziehen und schon mal einkreisen, ich werde ihn möglichst bald beheben.
Zur Ursache muss ich etwas ausholen:
MemBrain führt beim ersten Verwenden einer neuen Lesson (oder wenn deren Struktur sich verändert, z.B. neue Spalten) einen Abgleich mit dem Netz durch (Check auf identische I/O Namen). Dabei werden zur Performance-Optimierung den Spalten der Lesson direkt Ihre Neuronen zugewiesen (über Pointer).
Wenn nun das Kontrollkästchen 'Output Data' im Lesson-Editor nicht gesetzt ist, dann wird dieser Abgleich nicht für die Ausgangsdaten/-Neuronen durchgeführt, da MemBrain davon ausgehen muss, dass diese nicht zusammenpassen und deshalb vom Benutzer dieses Kästchen gesetzt wurde. Es ist also dazu da, die Input-Daten einer Lesson verwenden zu können, ohne dass die Outputdaten zu den Ausgangsneuronen passen. Typischerweise macht man das, wenn man nur Input-Daten hat, aber auch ein oder mehrere Ausgangsneuronen.
Nun ist seit Version 03.00.05.00 ein zusätzlicher Check implementiert: Bevor 'Think On Lesson' oder 'Teach' ausgeführt wird, prüft MemBrain auf Einhaltung der Normalisierungsgrenzen durch die aktuelle Lesson. Leider beachtet dieser Check nicht das besagte Kontrollkästchen und versucht, auch die Limits für die Ausgangsneuronen zu prüfen, die ja aber während des Abgleichs nicht zugewisen wurden. Damit versucht MemBrain auf einen Nullpointer zuzugreifen und es kracht...
Die gute Nachricht ist: Für Dich gibt es einen einfachen 'Workaround':
Unterlasse einfach die Aufrufe
LESSON_OUTPUTS NO
in Deinem Skript. Setze zur Sicherheit ganz oben, direkt vor
LESSON_COUNT 3
die Zeile
LESSON_OUTPUTS YES
Das führt dazu, dass vor dem Erzeugen der neuen leeren Lessons das Häkchen gesetzt ist und die neuen Lessons somit auch mit Häkchen erzeugt werden.
Damit läuft Dein Skript schon mal ohne Absturz durch.
Jetzt musst Du nur Deinen Eintrag
SLEEP 8000
wieder durch
SLEEP THINK_END
ersetzen und alles ist OK.
Meld' Dich doch bitte nochmal, wenn Du es ausprobiert hast.
Der Bug wird, wie gesagt, so schnell wie möglich behoben, da er schon 'fies' ist, tausend Dank nochmal für die Meldung!
Übrigens verletzen Deine Validierungsdaten die Normalisierungsgrenzen des Netzes. Allerdings wird bei Ausführung von 'ThinkLesson' durch ein Skript keine Meldung gegeben. Ich werde mal darüber nachdenken, ob es Sinn macht, ein Skript durch so eine Meldung anzuhalten oder nicht... ich denke aber eigentlich schon.
In Deinem Fall, wo die Validierungs-Lesson Ausgangsdaten hat, ist es ohnehin besser, diese zu aktivieren, da Du dann im Pattern Error Viewer direkt nach dem THINK_LESSON Soll und Ist grafisch vergleichen kannst.
freut mich, dass es jetzt klappt und natürlich vielen Dank für die Werbung!
Mir ist da bei Deinem Skript noch etwas aufgefallen, von dem ich mir nicht ganz sicher bin, ob es Absicht oder Versehen ist:
Die Zeile
RECORDING_TYPE OUT
legt fest, dass Du bei der Validierung nicht die auf Deinen Datenbereich umgerechneten Aktivitäten aufzeichnest, sondern die normalisierten Ausgangssignale Deiner Neuronen. Damit liegen Deine aufgezeichneten Daten alle im Bereich 0..1, weil MemBrain intern auf diese normalisiert.
Wenn Du also Deine 'echten' Daten sehen willst, dann musst Du
RECORDING_TYPE ACT
in Dein Skript schreiben oder die Zeile ganz weglassen (die Einstellung ist nach dem Start von MemBrain der Default).
Hinschreiben ist natürlich immer sicherer, dann wird eine evtl. fehlerhafte Einstellung auf jeden Fall überschrieben.