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
Netz in Excel VBA?
Re: Netz in Excel VBA?
Hallo,
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:
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!
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?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.
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
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
-
- Posts: 4
- Joined: Fri 16. Jan 2009, 16:15
Re: Netz in Excel VBA?
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
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