Versuche mehrfach durchlaufen lassen

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!
Bastian
Posts: 12
Joined: Wed 3. Dec 2008, 13:38

Versuche mehrfach durchlaufen lassen

Post by Bastian »

Hallo,

ist es über das Skript möglich:
1. Ein Netz automatisch starten zu lassen
2. die Lerndaten 100 mal durchlaufen zu lassen
3. die Gewichte zu speichern
4. anschließend den Versuch automatisch noch x mal durchlaufen zu lassen
5. das beste Ergebnis (Gewichte) als Netzkonfiguration zu verwenden?

Ich möchte dadurch die Gewichtsproblematik umgehen.


Gruß
Bastian
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Versuche mehrfach durchlaufen lassen

Post by Admin »

Hallo Bastian,

die Punkte 1. bis 3. sind möglich. Den selben Vorgang mehrfach zu wiederholden, ist im Skript direkt nicht möglich, die Skriptsprache unterstützt bisher noch keine Schleifen oder ähnliche Ablaufsteuerungs-Konstrukte. Es ist lediglich eine Art 'Batch'-Abarbeitung möglich.

Ebenso ist die Auswahl des besten Netzes über Skript nicht möglich.

Wenn Du allerdings die MemBrain DLL verwendest in Verbindung mit einer Programmiersprache, dann wird das alles möglich (und natürlich noch mehr).
Thomas Jetter
Bastian
Posts: 12
Joined: Wed 3. Dec 2008, 13:38

Re: Versuche mehrfach durchlaufen lassen

Post by Bastian »

Hallo Thomas,

danke für die Antwort. Leider funktioniert das VBA Skript bei mir noch nicht, siehe viewtopic.php?f=6&t=6.

Aber ich denke das wird.

gruß
User avatar
Seppy
Posts: 47
Joined: Fri 5. Dec 2008, 04:48
Location: 90537 Feucht

Re: Versuche mehrfach durchlaufen lassen

Post by Seppy »

Hallo Bastian,
ich hab das so gelöst:

Cygwin installieren.
http://www.cygwin.com/
http://de.wikipedia.org/wiki/Cygwin
(Damit steht Dir ein fast komplettes Linux-System unter Windows zur Verfügung).

Ein Linux Shellscript mit einer Schleife erstellen.
Das Shellscript ruft eine DOS-Batchdatei auf und übergiebt den "Schleifenzähler" als Parameter an die BATCH.
Die Batchdatei startet jetzt MemBrain mit einem Script.
Ist der Lernvorgang zu Ende, speichert MemBrain den Netzoutput und das Netz ab.
Danach wird das Netz von der BATCH nach "Schleifenzähler" (z.B. 0.mbn, 5.mbn usw.) kopiert.
Jetzt suchst Du Dir den besten Netzoutput heraus und benutzt jetzt das entsprechende Netz z.B. 7.mbn.

Linux Shellscript:
############################################################################################
#! /bin/sh

let Count=0
rm -fv "/cygdrive/c/Dokumente und Einstellungen/Josef Rauch/Eigene Dateien/MemBrain/Dax_Out.csv"
rm -fv "/cygdrive/c/Dokumente und Einstellungen/Josef Rauch/Eigene Dateien/MemBrain/Dax_End.csv"

while [ $(( Count )) -lt 20 ] ; do
let Count=Count+1
"/cygdrive/c/Dokumente und Einstellungen/Josef Rauch/Eigene Dateien/MemBrain/Dax.bat" $(( Count ))
cat "/cygdrive/c/Dokumente und Einstellungen/Josef Rauch/Eigene Dateien/MemBrain/Dax_Out.csv" | grep ^[0-9-] >> "/cygdrive/c/Dokumente und Einstellungen/Josef Rauch/Eigene Dateien/MemBrain/Dax_End.csv" ;
done
############################################################################################

DOS Batchdatei:
############################################################################################
@Echo Off
Cls
C:\Programme\MemBrain\MemBrain.exe /S C:\Dokumente und Einstellungen\Josef Rauch\Eigene Dateien\MemBrain\Dax.txt
Copy /V /Y "C:\Dokumente und Einstellungen\Josef Rauch\Eigene Dateien\MemBrain\Dax.mbn" "C:\Dokumente und Einstellungen\Josef Rauch\Eigene Dateien\MemBrain\%1.mbn"
############################################################################################

MemBrain Script:
############################################################################################
VIEW_SETTING BLACK_BG YES SHOW_GRID NO UPDATE_TEACH YES UPDATE_THINK YES SHOW_FIRE NO SHOW_ACT_SPIKES NO SHOW_LINKS YES
'
OPEN_NET Dax.mbn
'RESET_NET
'RANDOMIZE_NET
RESET_THINK_STEPS
LESSON_COUNT 1
LESSON_COUNT 3

SET_LESSON 1
IMPORT_LESSON_RAW Dax_Lern.csv
HIDE_LESSONEDITOR
SET_TEACHER "BP"
TEACHER_SETTING LEARNRATE 0.05
TEACHER_SETTING TARGET_ERR 0.001
TEACHER_SETTING LESSON_REPS 1
TEACHER_SETTING PATTERN_REPS 1
TEACHER_SETTING PATTERN_SELECT ORDERED
TEACH_SPEED 0
'SHOW_ERRORVIEWER
'RESET_ERRORVIEWER
START_TEACH
SLEEP TEACH_END
'HIDE_ERRORVIEWER
RESET_THINK_STEPS

SET_LESSON 2
IMPORT_LESSON_RAW_IN Dax_Think.csv
LESSON_OUTPUTS NO
RECORDING_TYPE ACT
START_RECORDING 3
HIDE_LESSONEDITOR
THINK_STEP 1
SLEEP THINK_END
STOP_RECORDING

SET_LESSON 3
EXPORT_LESSON_RAW_OUT Dax_Out.csv

TEACH_SPEED 0
SAVE_NET Dax.mbn
EXIT
############################################################################################

Gruss,
Lucky Seppy
Wer arbeitet macht Fehler, wer wenig arbeitet macht wenig Fehler, wer nicht arbeitet macht keine Fehler, wer keine Fehler macht wird befördert.
Bastian
Posts: 12
Joined: Wed 3. Dec 2008, 13:38

Re: Versuche mehrfach durchlaufen lassen

Post by Bastian »

Hallo Seppy,
vielen Dank für deinen Tipp. Ich denke VBA wird für mich wahrscheinlich doch etwas besser geeignet sein, weil ich auch die Auswertung hinterher komplett mit Excel machen muss, dann muss ich nicht so häufig Daten portieren.
Die Skriptportierung ist mir nun auch endlich gelungen. Habe sie mal angehangen, vielleicht ist sie ja auch für andere interessant.

Gruß
Bastian
Attachments
MBInputQualify_Excel_2007.rar
(30.27 KiB) Downloaded 756 times
User avatar
Seppy
Posts: 47
Joined: Fri 5. Dec 2008, 04:48
Location: 90537 Feucht

Re: Versuche mehrfach durchlaufen lassen

Post by Seppy »

Hallo Bastian,
Ich kenn mich leider nur mit den Linux Shells und etwas Perl aus (Bin in der Linux/Unix Welt zuhause)...
Aber mit den Linux Befehlen "cut, grep, sed awk u.s.w" kannst Du deine Outputdaten filtern, ausschneiden, sortieren u.s.w. und danach alles wieder in eine *.csv Datei schreiben, diese in Excel importieren und weitermachen...

C
C++
VBA
sind für mich leider "black Boxes".

Such mal in der Windows Hilfe nach "Script Host", damit sind auch Schleifen etc. möglich.
Vielleicht ist es das, was Du suchst.
Bei Linux helfe ich Dir gerne weiter.

Gruss Seppy
Wer arbeitet macht Fehler, wer wenig arbeitet macht wenig Fehler, wer nicht arbeitet macht keine Fehler, wer keine Fehler macht wird befördert.
Bastian
Posts: 12
Joined: Wed 3. Dec 2008, 13:38

Re: Versuche mehrfach durchlaufen lassen

Post by Bastian »

Hallo,

Thomas hat mir geholfen ein VBA Skript zum automatischen Lehren und Auswerten eines Netzes zu erstellen.
Dieses Skript läd ein Netz, welches in MemBrain erstellt wurde ein. Anschließend lehr es dieses Netz mit einer Teachdatei. Dabei wird der Netzfehler erfasst, mitprotokolliert und das Netz mit dem geringsten Fehler wird abgespeichert.

Zusätzlich kann auch eine Validierungsdatei ausgewählt werden, der ausgegebene Netzfehler bezieht sich dann auf diese.

Anbei eine Version die unter Excel 2003 und 2007 laufen sollte.

Gruß
Bastian

PS: Die Datei hat noch Fehler die ich gerade korrigieren muss ;)
Last edited by Bastian on Wed 10. Dec 2008, 14:18, edited 1 time in total.
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Versuche mehrfach durchlaufen lassen

Post by Admin »

Hallo Bastian,

hast Du zu der Excel-Datei noch ein paar Kommentare auf die erste Seite tippen können? Dort stand in meiner Ur-Version nämlich noch nicht, was das Progrämmchen tut und dass es eine Teacher.mbt Datei im selben Verzeichnis benötigt...

Grüße
Thomas Jetter
Bastian
Posts: 12
Joined: Wed 3. Dec 2008, 13:38

Re: Versuche mehrfach durchlaufen lassen

Post by Bastian »

Hallo Thomas,
da habe ich es noch nicht hingeschrieben, ich habe es in ein help-fenster geschreiben, welches aber nur auftaucht wenn man das Skript startet -.-
Werde es korrigieren. Allerdings scheint auch in der Auswertung noch ein Fehler zu sein. Ich lasse mir gerade alle Netzfehler ausgeben, dabei habe ich festgestellt, dass sie immer schlechter werden, z.b. von 50 plötzlich zu 1000 und dann noch schlechter...
Suche gerade den Fehler und füge nach Korrektur ein neues Skript an.
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Versuche mehrfach durchlaufen lassen

Post by Admin »

Hallo Bastian,

kannst Du mir Deinen VBA-Code (als txt) und Deine Dateien (Teachers.mbt, Netze und Lessons) einmal mailen? Dann kann ich versuchen, das Problem zu reproduzieren und zu debuggen. Weiß allerdings noch nicht, wann ich Zeit dazu finde...

Grüße
Thomas Jetter
Post Reply