Link in C# abfragen

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
Willy
Posts: 2
Joined: Sun 8. Jul 2012, 11:28

Link in C# abfragen

Post by Willy »

Hallo,

ich versuche nun seit längerer Zeit die Gewichte zwischen den Neuronen in C# ab zu fragen.
Hierfür gibt es ja die Methode net.GetSelectedLinkProp(out prop); wenn ich es richtig verstanden habe.
Leider weiß ich nicht wie ich einen Link selektiere.

Kann mir jemand vielleicht ein Beispiel geben, wie ich ein Link selektiere, so das mir die Methode nicht immer false zurück liefert?

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

Re: Link in C# abfragen

Post by Admin »

Hallo Willy,

in diesem Thread:
viewtopic.php?f=5&t=255
hatte jemand eine ähnliche Frage. Dort war zwar die Frage auf Nutzung der DLL in Metatrader bezogen (also nicht Thema C#) aber es ging um genau die selben DLL-Interfaces zum Auslesen von Links. Lass Dich nicht vom Namen des Thread-Themas verwirren, um das Auslesen der Links geht es etwas weiter unten, gegen Ende des Threads.

Wenn Dir die Anleitung dort nicht ausreicht, dann melde Dich bitte wieder.

Viele Grüße und viel Erfolg!
Thomas Jetter
Willy
Posts: 2
Joined: Sun 8. Jul 2012, 11:28

Re: Link in C# abfragen

Post by Willy »

Danke, ich habe wohl alles versucht, bis auf diese Kombination.
Jetzt geht es super.
Falls es noch mal jemand benötigt, hier ein Beispiel um von dem ersten Input Neuron zum ersten hidden Neuron das Gewicht aus zu lesen.

bool bOk;
// Clear all selection
net.ClearSelection();
net.ClearExtraSelection();

// Select the first input neurons
bOk = net.SelectInput(0, true);

// Shift the Extra Selection to the current selection
net.ExtraSelection();

// Select from the first hidden layer the first hidden neuron
bOk = net.SelectHidden(0, 0, true);

// Select Link for input neuron to hidden neuron
net.SelectFromExtra();

// Read selected Link
NeuralNet.SMBLinkProp prop = new NeuralNet.SMBLinkProp();
bOk = net.GetSelectedLinkProp(out prop);
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Link in C# abfragen

Post by Admin »

Vielen Dank für das Beispiel!

Noch zwei kleine Anmerkungen:
1.) In den Aufrufen der Art:

Code: Select all

bOk = net.SelectHidden(0, 0, true);
sollte statt 'true' besser 'false' verwendet werden. Der parameter 'addToSelection', der hier angesprochen wird, bewirkt, dass das entsprechende Neuron ZUSÄTZLICH zur bestehenden Auswahl selektiert wird. Im vorliegenden Beispiel macht es nichts, wenn das Inputneuron auch noch selektiert ist. In anderen Fällen kann es aber durchaus zu Problemen kommen, da ein Neuron auch gleichzeitig selektiert und Extra-selektiert sein kann. So kann man z.B. Loopback-Links selektieren, also Links, die vom Ausgang eines Neurons auf seinen eigenen Eingang zurückführen.

2.) man sollte darauf achten, dass der Rückgabewert 'true' einer Funktion nicht versehentlich vorgelagerte 'false' Rückgabewerte überschreibt. Deshalb besser:

Code: Select all

bOk = bOK && net.SelectHidden(0, 0, true);
Dann kann man ganz am Ende einmal auf bOk prüfen und so sehen, ob wirklich alle Aufrufe OK waren.

Viele Grüße,
Thomas
Thomas Jetter
Post Reply