Netz in Excel VBA?

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.
Post Reply
Skyflipper
Posts: 4
Joined: Fri 16. Jan 2009, 16:15

Netz in Excel VBA?

Post by Skyflipper »

Hallo Thomas,

kann ich ein trainiertes Netz als VBA Funktion in Excel einbinden?
Ich stelle mir vor, das trainierte Netz als dll zu hinterlegen und per VBA aufzurufen.
Der Aufruf in einer Excel Zelle sollte z.B. so erfolgen: =NN(A2;A3;A4,A5)
wobei Zellen A2 .. A5 die Input-Variablen liefern.

In VBA selber sähe die Funktion vielleicht so aus:

Function NN (input1, input2, input3, input4 As Single) As Single
Dim ...
' Aufruf der dll & übergabe des oder der outputs
' Ggf Nachberechnung, um zu *einem* Wert zu kommen
NN = dieser Wert
End Function

Alternativ könnte das Netz natürlich auch passiv als Sub eingebunden werden, welche sich die input Variablen aus dem sheet holt & den output zurückschreibt.

Was meinst Du? Realistisch?

Vielen Dank
Sky
User avatar
TJetter
Posts: 346
Joined: Sat 13. Oct 2012, 12:04

Re: Netz in Excel VBA?

Post by TJetter »

Hallo,
Skyflipper wrote:kann ich ein trainiertes Netz als VBA Funktion in Excel einbinden?
Ich stelle mir vor, das trainierte Netz als dll zu hinterlegen und per VBA aufzurufen.
Der Aufruf in einer Excel Zelle sollte z.B. so erfolgen: =NN(A2;A3;A4,A5)
wobei Zellen A2 .. A5 die Input-Variablen liefern.
ich habe zwar nicht allzu viel Erfahrung in der Excel-VBA Programmierung, aber das hört sich erst einmal unproblematisch an, Wo erwartest Du Schwierigkeiten?
Hast Du Dir das Excel VBA Beispiel von der Homepage schon mal angesehen? Da sollte eigentlich alles drin sein, was Du brauchst.
Die DLL-VBA Wrapper, die Du benötigst sind:

Code: Select all

' Load the currently active neural net from the given *.mbn file (including path)
Private Declare Function MB_LoadNet Lib "MemBrainDll.dll" _
Alias "__MB_LoadNet@4" (ByVal fileName As String) As Long

' Apply an activation value to the input neuron at index <idx>.
Private Declare Function MB_ApplyInputAct Lib "MemBrainDll.dll" _
Alias "__MB_ApplyInputAct@12" (ByVal idx As Long, ByVal act As Double) As Long

' Perform one think step of the net
Private Declare Sub MB_ThinkStep Lib "MemBrainDll.dll" _
Alias "__MB_ThinkStep@0" ()

' Get the activation value of the ouTput neuron at index <idx>.
Private Declare Function MB_GetOutputAct Lib "MemBrainDll.dll" _
Alias "__MB_GetOutputAct@8" (ByVal idx As Long, ByRef act As Double) As Long
Die Frage wird sein, an welcher Stelle im Code Du das Netz lädst (mittels erster VBA-DLL Funktion oben). Gibt es eine VBA Routine, die beim Öffnen des Netzes einmalig aufgerufen wird? Oder Du machst Dir einen 'Load Button' für diesen Zweck in Dein Sheet.

Sag Bescheid, wenn Du mehr Informationen benötigst.

Wenn Du so ein Sheet erstellt hast, dann wäre es natürlich toll, Du würdest es hier posten, das wird bestimmt vielen Nutzern helfen!

Viel Erfolg und Grüße

Edit: Stelle gerade fest, dass Du diese Frage im Prinzip bereits 2009 gestellt hast und ich sie wohl damals übersehen habe:
viewtopic.php?f=5&t=21&p=198#p198
Bitte vielmals um Entschuldigung und hoffe, sie wird nun hier beantwortet!
Thomas Jetter
Skyflipper
Posts: 4
Joined: Fri 16. Jan 2009, 16:15

Re: Netz in Excel VBA?

Post by Skyflipper »

Hallo Thomas,

hey - vielen lieben Dank für die schnelle Antwort.
Ja, ich hatte das schon mal gefragt, dann aber das Projekt verworfen - nun isses wieder aufgetaucht.
Ich hab mir Dein VBA Beispiel schon mal angesehen, fand es aber für meine Zwecke zu kompliziert.
Training und alles würde ich in Membrain selber machen, nur die Nutzung des trainierten Netzes aus Excel aufrufen.
Ich hoffe, ich kann die Tage mal ein bisschen rumspielen & werde Deine Vorschläge ausprobieren.
Wenn ich was nützliches rausgefunden habe, melde ich mich freilich nochmal & kann gerne auch sheets posten.

Liebe Grüße
Sky
Post Reply