Einbinden von MemBrainDll in Unity 3d Script

Sie haben ein bestimmtes Projekt zu bearbeiten und wissen nicht, wie Sie an die Aufgabe heran gehen sollen? Sie sind sich nicht sicher, ob Ihr Netzentwurf zu Ihrem Problem passt oder ob es da Optimierungsmöglichkeiten gibt? Ist es überhaupt sinnvoll an Ihre Daten mit einem NN basierten Ansatz heranzugehen? Ist MemBrain das richtige Werkzeug für Ihr Problem und Ihre Infrastruktur?

Hier ist der richtige Platz für diese Art von Fragen.
User avatar
TJetter
Posts: 318
Joined: Sat 13. Oct 2012, 12:04

Re: Einbinden von MemBrainDll in Unity 3d Script

Post by TJetter » Thu 22. Jun 2017, 18:35

Amper wrote:Was soll Rückgabewert geprüft und behandelt heißen?
Die Methoden der Klasse 'NeuralNet' geben oft boolsche Wert zurück, true für Erfolg, false für Fehler.
Z.B.

bool ok = net.Load("...);
ok = ok && net.ApplyInputAct(...);
ok = ok && net.GetInputAct(...);

if (!ok)
{
MessageBox.Show("Error!");
}

--> Kehren denn alle Methoden mit true zurück?

Wichtig auch: Nachdem alle Inputs mit ApplyInputAct angelegt wurden, muss vor dem Abrufen der Outputs mit GetOutputAct ein Rechenschritt des Netzes durch Aufrufen von ThinkStep() ausgeführt werden.
Wenn aber schon das Beispiel mit ApplyInputAct und anschließendem GetInputAct nicht funktioniert, dann läuft was anderes falsch.

Gerne mir mal den Code schicken, dann schau ich mir die Sache einmal an.

Viele Grüße
Thomas Jetter

Amper
Posts: 9
Joined: Wed 7. Jun 2017, 09:06

Re: Einbinden von MemBrainDll in Unity 3d Script

Post by Amper » Fri 23. Jun 2017, 08:46

Hallo,

also ich hab jetzt ein paar Test gemacht dabei sind mir zwei Fehler aufgefallen. Jetzt bekomme ich den mit net.ApplyInputAct(...); an das Netz gelieferten Wert über net.GetInputAct(...); wider zurück. Passt so weit.

Die Abfrage liefert mir dementsprechend auch immer true zurück.

Leider bekomme ich immer noch nicht die erwarteten Werte zurück.

Code: Select all

		net.GetInputAct(1,out tempdouble);
		i = net.GetOutputWinnerNeuron();

		Debug.Log (" tempdouble vor Think: " + tempdouble);
		Debug.Log ("I Vor Think: " + i);
		
		net.ThinkStep();
		net.GetInputAct(1,out tempdouble);
		i = net.GetOutputWinnerNeuron();

		Debug.Log ("I nach Think: " + i);
		Debug.Log (" tempdouble nach Think: " + tempdouble);;	
Die Ausgabe dazu sieht wie folgt aus:
tempdouble vor Think : 1
I Vor Think: -1
I nach Think: 2
tempdouble nach Think: 1

Bedeutet ja das ThinkStep() Erfolgreich war. Wobei ich bisher der Meinung war das die Eingangsneuronen danach auf 0 zurück gesetzt werden müssten und nicht auf dem "alten" Wert stehen bleiben. Im Anhang hab ich die Einstellungen der Neurone gezeit.

Grüße
Amper
Attachments
Neurone.JPG
(55.42 KiB) Not downloaded yet

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

Re: Einbinden von MemBrainDll in Unity 3d Script

Post by TJetter » Fri 23. Jun 2017, 12:55

Amper wrote:Bedeutet ja das ThinkStep() Erfolgreich war.
Korrekt
Amper wrote:Wobei ich bisher der Meinung war das die Eingangsneuronen danach auf 0 zurück gesetzt werden müssten und nicht auf dem "alten" Wert stehen bleiben
Nein, die Eingangsneurone behalten Ihre Aktivitätswerte. Genau so geschieht das ja auch in MemBrain selbst: Einfach mal mehrfach den Button 'Think Step' klicken: Danach haben die Eingangsneurone immer noch den selben Wert. Das wird durch den 'Activation Sustain Factor' erzeugt, der bei Eingangsneuronen als Default immer auf 1 steht. Wird dieser auf einen kleineren Wert gesetzt, dann fällt die Aktivität bei jedem Think Step ab (siehe Berechnungsgleichungen der Neuronen in der MemBrain Hilfe).
Thomas Jetter

Amper
Posts: 9
Joined: Wed 7. Jun 2017, 09:06

Re: Einbinden von MemBrainDll in Unity 3d Script

Post by Amper » Fri 23. Jun 2017, 13:19

'Activation Sustain Factor'

jetzt wo ich es noch mal höhre. Ja das hab ich auch schon ein einem anderen Beitrag gelesen. Es sind doch immer wider die selben Fragen die gestellt werden :roll:

Post Reply