LOGISITC Aktivierungsfunktion

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
haimat
Posts: 4
Joined: Sun 18. Jan 2009, 12:42

LOGISITC Aktivierungsfunktion

Post by haimat »

Hallo!

Ich schreibe derzeit an einer ANN-Implementierung für ein embedded System. Hier möchte ich ein in MemBrain erstelltes Netz exportieren (als CSV-Datei) und diese Daten (sprich das trainierte Netz) im embedded System einlesen. Soweit, sogut. Jetzt stellt sich mir nur noch die Frage, wie ich die LOGISTIC-Funktion in meiner Applikation implementieren soll, um mit MemBrain kompatibel zu sein.

Aus der Literatur kenne ich diese Funktion: logistic(x) = 1 / 1 + e^(-c*x)

wobei c die Kurve bekanntlich steiler oder flacher macht. Wie schaut diese Formel in MemBrain aus, sprich dieses c? Der Rest der Formel wird ja vermutlich genauso aussehen, aber verwendet MemBrain hier einen anderen Wert für c als -1?

Ich bin für jeden Hinweis dankbar!

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

Re: LOGISITC Aktivierungsfunktion

Post by Admin »

haimat wrote:Ich schreibe derzeit an einer ANN-Implementierung für ein embedded System. Hier möchte ich ein in MemBrain erstelltes Netz exportieren (als CSV-Datei)
MemBrain kann aus einem trainierten Netz direkt C-Code generieren, ohne Umweg über ein CSV file. Kommt das wegen abweichender Programmiersprache nicht in Frage?

Bzgl. der Gleichung:
In der MemBrain C-Library, die zusammen mit dem generierten Code kompiliert wird, ist natürlich auch die von MemBrain verwendete Logistic-Funktion als C Code enthalten.
Dort in der Datei 'Neuron.c' nach der Funktion

Code: Select all

static void PropagateLogistic(T_ACT_FLOAT* pAct, FLOAT32 inputSum, FLOAT32 exponent)
suchen.

Die MemBrain C-Library befindet sich im Unterverzeichnis 'C-CODE' des MemBrain Installationsverzeichnisses.

Viele Grüße
Thomas Jetter
haimat
Posts: 4
Joined: Sun 18. Jan 2009, 12:42

Re: LOGISITC Aktivierungsfunktion

Post by haimat »

Hallo Thomas,

danke für den Hinweis. Leider kann ich den generierten C-Code nicht verwenden, da das embedded System, welches ich verwende, nur eine minimalistische Variante von C bietet.

Zur MemBrain C-Funktion PropagateLogistic(): Mir scheint, der Parameter "FLOAT32 exponent" ist das "c" aus meiner Gleichung oben. Wie finde ich heraus, welcher Wert hier für "exponent" an diese Funktion übergeben wird? Ist das vielleicht genau jener Wert, welcher beim Export im CSV File als Feld "EXP_LOG" zu finden ist?

Danke und VG, Matthias
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: LOGISITC Aktivierungsfunktion

Post by Admin »

haimat wrote:Ist das vielleicht genau jener Wert, welcher beim Export im CSV File als Feld "EXP_LOG" zu finden ist?
Das ist korrekt, ja.
Allerdings nur so lange, wie für alle Neuronen im Netz der selbe Wert verwendet wird: In MemBrain kann für jedes Neuron ein anderer Wert verwendet werden (Reiter 'Customize Activation Functions' in den Neuron-Eigenschaften). In diesem Fall wird der Wert aus der für die jeweiligen Neuronen erzeugten Daten-Sätzen im Code genommen.

In aller Regel wählt man aber für alle LOGISTIC-Neuronen den selben Wert für den Exponenten, so dass Deine Annahme zutrifft. Du kannst den Wert bei jedem LOGISTIC-Neuron in den Neuron-Eigenschaften auf dem Reiter Reiter 'Customize Activation Functions' einsehen: Es ist das Edit-Feld 'Exponent Logistic', welches als Default für alle Neuronen den Wert '3' hat.

Viele Grüße
Thomas Jetter
haimat
Posts: 4
Joined: Sun 18. Jan 2009, 12:42

Re: LOGISITC Aktivierungsfunktion

Post by haimat »

vielen Dank!
Post Reply