"Use Lesson"-Setting: Nutzung

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!
Post Reply
vossy
Posts: 2
Joined: Sun 3. Jul 2011, 21:00

"Use Lesson"-Setting: Nutzung

Post by vossy »

Hallo,

Mein Problem: ich habe einige tausend Input-Neuronen - es geht um Sound-Verarbeitung unter JAVA: Ich möchte eine Fourier-Analyse nicht erst als Lesson eingeben und dann mit MBDllWrapper.MBApplyPattern() in das Netz übertragen, da der Vorgang sehr lange dauert.

Da bin ich im Teacher Manager der GUI auf die Einstellung "Use Lesson" gestoßen. Leider habe ich es nicht geschafft, dieser Einstellung - also keine Lesson zu nutzen (kein Haken bei Use Lesson) - richtig einzusetzen. Mein Netz, das ich über eine Lesson trainiert habe, funktioniert. Wenn ich die "Activation" alle per Hand in meinem Netz setze -ich denke, dass das der richtige Weg ist - und das Netz dann nicht über Lesson trainiere, funktioniert mein Netz nicht. Diesen Test habe ich direkt über die MemBrain-Editor gemacht.

Was muss ich tun, wenn ich keine Lesson nutzen möchte (kei Halen bei Use Lesson), um ein Netz zu trainieren?
Kann ich das zurückschreiben einer Lesson mit ApplyPattern beschleunigen? Bei mir dauer das ca. 70 Sekunden!
Hat jemand funkionierenden, schnellen Beispielcode für Java für das trainieren eines Netzes?

Danke für eine Antwort!

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

Re: "Use Lesson"-Setting: Nutzung

Post by Admin »

Hallo Vossy,

der Haken 'Use Lesson' ist tatsächlich nur dazu da, beim Einsatz in der Vernetzung mehrerer MemBrain Instanzen bestimmten Instanzen mitzuteilen, dass sie keine Lesson verwenden sollen, sondern Fehlersignale über die externen Neuronen via TCP/IP verarbeiten sollen.

Diese Einstellung ist für Dein Vorhaben nicht da Richtige.

Die Funktion MBApplyPattern() wird allerdings zum Trainineren auch nicht benötigt. Diese Funktion legt lediglich das momentan aktive Pattern der aktiven Lesson an die EIngangsneuronen des Netzes an. Die Funktion ist zur Verwendung in Verbindung mit einem bereits trainierten Netz gedacht.

Zum Trainieren bleibt wirklich nur der Weg über eine Lesson. Allerdings müssen dabei nicht alle Pattern einzeln per dll-Aufruf an das Netz angelegt werden. Vielmehr greift sich die dll beim Aufruf von TeachStep() einmal jedes Pattern in der aktiven Lesson, legt es an und führt damit einen Trainingsschritt aus. D.h., nach der Rückkehr von TeachStep() wurde jedes Pattern in der Lesson einmal traininert.

Viele Grüße
Thomas Jetter
vossy
Posts: 2
Joined: Sun 3. Jul 2011, 21:00

Re: "Use Lesson"-Setting: Nutzung

Post by vossy »

Hallo,

danke für die schnelle Antwort. Schade..., da ich immer noch das Problem habe, dass ich viele Sekunden (>70) brauche, um aus einer Lesson die Daten zum Trainieren ins Netz zu bekommen. Momentan baue ich explizit immer eine Lesson auf und Trainiere dann das Netz.
Bei 100 Testmustern, die ab besten immer nacheinander, aber dann auch mehrere Male durchlaufen werden müssen, liege ich im Bereich von Tagen! Wenn ich die Werte direkt ins Netz schreibe geht das in weniger als 0,2 Sekunden.

Fragen:
Geht es schneller, wenn ich erst alle Muster in die Lesson lade?
Mache ich grundsätzlich etwas falsch?
Warum benötigt MemBrain so lange, um eine Lesson für das Training zu transferieren?
Wie kann ich die Zeit reduzieren?
Wie machen andere es, wenn vielen Input-Neuronen mit vielen Lessons gefüllt werden müssen.

Ich hoffe es gibt einen Ausweg/eine Lösung! Die Reduzierung von Neuronen ist meiner Meinung nach keine Option!

Danke für eine Anwort!

Viele Grüße
Vossy
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: "Use Lesson"-Setting: Nutzung

Post by Admin »

vossy wrote:Schade..., da ich immer noch das Problem habe, dass ich viele Sekunden (>70) brauche, um aus einer Lesson die Daten zum Trainieren ins Netz zu bekommen
Ich glaube, hier liegt noch ein grundsätzliches Missverständnis vor:
Zum Trainieren des Netzes muss weit mehr geschehen, als nur die Daten ans Netz anzulegen: Das Netz muss dann zunächst seine Ausgangswerte berechnen. Dann muss mittels Backpropagation jedes Gewicht und jede Activation Threshold optimiert werden.

All das macht MemBrain NUR basiert auf Lesson-Input. Dazu erstellt man eine Lesson, die alle zu trainierenden Pattern als Datenzeilen enthält. MemBrain führt dann mit jedem TeachStep einen Trainingsschritt für JEDES der enthaltenen Pattern aus.

Dieser Vorgang muss so oft wiederholt werden, bis der Netzfehler den gewünschten minimalen Wert erreicht hat.
Admin wrote:Geht es schneller, wenn ich erst alle Muster in die Lesson lade?
Es gibt tatsächlich gar keinen anderen sinnvollen Weg. Wie oben beschrieben, ist das der Standard.

Wenn sich Deine Fragen damit nicht klären, dann schlage ich vor, dass Du ganz genau jeden Schritt erlüuterst, den Du durchführst (z.B. über einen Quellcode-Post, am besten formatiert mit der 'Code' Formatierung, dann ist es besser lesbar). Vielleicht lässt sich dann besser klären, wo wir aneinander vorbei reden.

Viel Erfolg und viele Grüße
Thomas Jetter
Post Reply