Page 2 of 2

Re: Einbinden von MemBrainDll in Unity 3d Script

Posted: Thu 22. Jun 2017, 18:35
by TJetter
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

Re: Einbinden von MemBrainDll in Unity 3d Script

Posted: Fri 23. Jun 2017, 08:46
by Amper
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

Re: Einbinden von MemBrainDll in Unity 3d Script

Posted: Fri 23. Jun 2017, 12:55
by TJetter
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).

Re: Einbinden von MemBrainDll in Unity 3d Script

Posted: Fri 23. Jun 2017, 13:19
by Amper
'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: