Problem: Eine Lesson laden mittels Membrain DLL

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!
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Problem: Eine Lesson laden mittels Membrain DLL

Post by Admin »

schnurpel wrote:aber worin liegt der unterschied zwischen

MB_GetOutputAct
und
MB_GetOutputOut
MemBrain unterscheidet prinzipiell zwischen der Aktivierung und dem Output eines Neurons. Mit den Default-Einstellungen eines Neurons im Bereich 'Output Settings' auf der Eigenschaftenseite des Neurons sind Activation und Output aber immer identisch, deshalb bekommen Sie den selben Wert.

Traininert wird immer auf die 'Activation'. Der Output kann aber von der Activation unabhängig definiert werden. Z.B. kann man eine 'Feuerschwelle' definieren oder eine 'Erholzeit' des Ausgangs nach dem Feuern.
Das sind aber alles Dinge, die für ein zeitinvariantes Netz keine Rolle spielen. Für Ihre Zwecke können Sie also sowohl die eine als auch die andere Dll-Funktion verwenden.

Bei Interesse findet sich Genaueres über Activation, Output usw. im Hilfekapitel -Neurons in MemBrain / Neuron Model And Operation-
schnurpel wrote:komischerweise kommt jetzt bei der abarbeitung von MB_GetOutputAct(0, out0) eine unterbrechung mit überlauf-fehler.
Ich sehe gerade, dass Sie 'Integer' deklarieren, anstatt 'Long'. Wenn Sie VB6 verwenden, dann ist die korrekte Definition 'Long'. Das gilt auch für alle VB-Deklarationen der MemBrain Dll-Funktionen.
Sollten Sie diese also durch 'Integer' ersetzt haben, dann müssen Sie das wieder rückgängig machen, das ist nur für VB 2005/2008 die richtige Wahl.

Löst das das Problem?

Viele Grüße
Thomas Jetter
schnurpel
Posts: 24
Joined: Fri 25. Dec 2009, 20:15

Re: Problem: Eine Lesson laden mittels Membrain DLL

Post by schnurpel »

ja, alle probleme bis dahin gelöst, vielen dank!

und vielen dank auch nochmal für den sensationellen support!

>Bei Interesse findet sich Genaueres über Activation, Output usw. im Hilfekapitel -Neurons in MemBrain / Neuron Model And Operation-

danke, das werde ich mir in kürze zu gemüte führen.

schönes wochenende!
schnurpel
Posts: 24
Joined: Fri 25. Dec 2009, 20:15

Re: Problem: Eine Lesson laden mittels Membrain DLL

Post by schnurpel »

da war ich etwas zu vorschnell, long bringt den gleichen überlauf.
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Problem: Eine Lesson laden mittels Membrain DLL

Post by Admin »

Sind Sie sicher, dass Sie alle 'Integer' vom Code getilgt haben?

Leider habe ich kein VB6, ich kann dies Sache also nicht direkt nachvollziehen...

Viele Grüße
Thomas Jetter
schnurpel
Posts: 24
Joined: Fri 25. Dec 2009, 20:15

Re: Problem: Eine Lesson laden mittels Membrain DLL

Post by schnurpel »

ja, absolut sicher, habs noch mal überprüft.

ist aber ja vorerst nicht so schlimm, ich habs ja, wenn auch unsauber, gelöst.

vg
schnurpel
Posts: 24
Joined: Fri 25. Dec 2009, 20:15

Re: Problem: Eine Lesson laden mittels Membrain DLL

Post by schnurpel »

hallo noch mal,

' Import the currently active lesson from raw csv
ret = MB_ImportLessonRaw(fileName2)

hier bekomme ich IMMER einen return von -1

obwohl ich das file über membrain einwandfrei laden kann.

irgendeine idee?

vg

ps: ich vermute, da könnte ein fehler in der dll sein, denn das gleiche file kann ich im membrain-csv format einwandfrei einlesen.
pps: bezüglich des überlauffehlers, der ist nicht zu bändigen, weshalb ich jetzt versuche, den umweg über lesson import - result export zu gehen.
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Problem: Eine Lesson laden mittels Membrain DLL

Post by Admin »

Das Problem:
Aus einer Roh-CSV Datei alleine lässt sich die Aufteilung bzgl. Inputs/Outputs nicht erkennen. Außerdem kann MemBrain auch nicht davon ausgehen, dass die Anzahl der Spalten im CSV der Summe aus Inputs und Outputs entspricht, da MemBrain auch mit CSV Dateien umgehen können muss, bei denen sich eine logische Datenzeile über mehrere Zeilen im CSV erstreckt.

Aus diesem Grund muss MemBrain vor dem Import von Roh-CSVs wissen, wie viele (logische) Input- und wie viele Output-Spalten es zu importieren gilt.

Wenn in MemBrain der Lesson-Editor geöffnet wird, dann ist meist schon ein Netz geladen. In diesem Fall übernimmt der Lesson-Editor automatisch die Inputs und Outputs vom geladeden Netz, da dies meist das ist, was der Benutzer haben möchte. Dementsprechend klappt auch der CSV Rohimport meist problemlos.
Wenn man den Lesson-Editor allerdings nach dem Start von MemBrain öffnet, BEVOR ein Netz geladen ist, dann hat er defaultmäßig 10 Inputs und 10 Outputs und der Roh-CSV Import schlägt fehl.
Genau das selbe geschieht mit der dll mit dem Unterschied, dass beim Laden der dll der (natürlich unsichtbare) Lesson-Editor der dll bereits geladen wird. Zu diesem Zeitpunkt ist noch kein Netz geladen, deshalb steht die Azzahl inputs und outputs in der dll zu Anfang immer auf 10 und der Import klappt nicht.

Die Lösung:
Vor dem Import von Roh-CSV Dateien entweder die Funktion MB_NamesFromNet aufrufen (ein Netz muss bereits geladen sein) oder mit den Funktionen MB_SetLessonInputCount bzw. MB_SetLessonOutputCount die korrekte Anzahl an Inputs und Outputs einstellen. Dann sollte der Import klappen.

Das Problem besteht nur bei Roh-CSV Dateien. MemBrain CSV Dateien und mbl Dateien beinhalten alle notwendigen Infiormationen bereits, so dass sich die Anzahl In- und Outputs beim Laden dieser Dateien automatisch anpasst.

Bzgl. Ihres Überlaufs:
Schicken Sie mir doch bitte einmal ein VB Programm nebst zugehörigen Zusatzdateien, bei dem der Überlauf auftritt. Ich werde das Programm dann nach VB2008 portieren und damit versuchen, den Fehler zu reproduzieren.

Viele Grüße
Thomas Jetter
schnurpel
Posts: 24
Joined: Fri 25. Dec 2009, 20:15

Re: Problem: Eine Lesson laden mittels Membrain DLL

Post by schnurpel »

ja, das ist natürlich die lösung, vielen dank!

hab ihnen jetzt die daten geschickt....
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Problem: Eine Lesson laden mittels Membrain DLL

Post by Admin »

Leider kann ich nicht Ihren gesamten Code so einfach in VB2008 übernehmen, da sind zu viele Inkompatibilitäten.
Auch werden einige nicht deklarierte Variablen verwendet, das lässt VB2008 so einfach nicht mehr zu.

Ich habe aber ein kleines Testprogramm in VB2008 erstellt und Ihnen angehängt. Können Sie in VB6 bitte einmal versuchen, diesen Code mit ein paar Modifikationen zum Laufen zu bringen? Viele Anpassungen sollten nicht nötig sein.
Die dll-Aufrufe in diesem Code geschehen über MemBrain.MB_..., da ich alle MemBrain Funktionsdeklarationen in ein eigenes Code-Modul verschoben habe. Löschen Sie einfach das 'MemBrain.' am Anfang der Aufrufe, dann sollten Sie in der Lage sein, die bei sich im Code selbst deklarierten Funktionen aufzurufen.

Es handelt sich nur um zwei Funktionen: Die eine ist der Button Click Handler, die andere eine Funktion zum Zählen der Fehler und zur Ausgabe einer MessageBox, falls ein Fehler auftreten sollte.

Bei mir läuft das problemlos ohne Fehler durch, auch gibt es keine Überläufe o.ä.

Viele Grüße
Attachments
Form1.zip
VB 2008 Quellcode zum Test
(620 Bytes) Downloaded 675 times
Thomas Jetter
Post Reply