Hallo,
ich verwende derzeit die Membrain DLL zu Erstellung und Management von Kohonen Netzen.
In diesem Zusammenhang benötige ich für meinen Anwendungsfall auch Unresolved/Hidden Neuronen.
Obwohl Neuronen dieses Typs mittels DLL problemlos erstellt und mit Namen versehen werden können, so finde ich doch keine Funktion, mit der man den Namen solcher Neuronen wieder auslesen kann. ( MB_GetInputName und MB_GetOutputName gibt es. Eine Funktion MB_GetHiddenName oder MB_GetUnresolvedName finde ich nicht).
Fehlt diese Funktion tatsächlich oder übersehe ich hier was?
Gruß
Ernst
Fehlende Funktion für Hidden Neurons in MembrainDLL
Re: Fehlende Funktion für Hidden Neurons in MembrainDLL
Hallo,
eine solche Funktion gibt es momentan tatsächlich nicht. Ich nehme das gerne als Erweiterungswunsch für die nächste Version auf.
Zu welchem Zweck wird es denn im konkreten Fall benötigt?
Viele Grüße,
eine solche Funktion gibt es momentan tatsächlich nicht. Ich nehme das gerne als Erweiterungswunsch für die nächste Version auf.
Zu welchem Zweck wird es denn im konkreten Fall benötigt?
Viele Grüße,
Thomas Jetter
Re: Fehlende Funktion für Hidden Neurons in MembrainDLL
Hallo ,
ich verwende die Membrain DLL in einer mehrprozessor multihtreading Architektur mit sehr vielen gleichzeitig geladenen Netzen.
Vor dem Aufruf wichtiger Lern- und Berechnungsfunktionen möchte ich sicherstellen, dass auch wirklich das "richtige" Netz geladen und über die DLL richtig indiziert verwendet wird.
Da die Membrain DLL leider keine Möglichkeit bietet, eine netzspezifische Information zur Laufzeit zu hinterlegen und auch der Dateiname nicht abrufbar ist, wollte ich diese Prüfinformation behelfsmäßig über Hidden Neuronen und deren einziges Textattribut Name nachbilden.
Besser wäre es natürlich, man könnte mittels der DLL ein Tag-Objekt pro Netz zuordnen und verwalten.
Gruß
Ernst
ich verwende die Membrain DLL in einer mehrprozessor multihtreading Architektur mit sehr vielen gleichzeitig geladenen Netzen.
Vor dem Aufruf wichtiger Lern- und Berechnungsfunktionen möchte ich sicherstellen, dass auch wirklich das "richtige" Netz geladen und über die DLL richtig indiziert verwendet wird.
Da die Membrain DLL leider keine Möglichkeit bietet, eine netzspezifische Information zur Laufzeit zu hinterlegen und auch der Dateiname nicht abrufbar ist, wollte ich diese Prüfinformation behelfsmäßig über Hidden Neuronen und deren einziges Textattribut Name nachbilden.
Besser wäre es natürlich, man könnte mittels der DLL ein Tag-Objekt pro Netz zuordnen und verwalten.
Gruß
Ernst
Re: Fehlende Funktion für Hidden Neurons in MembrainDLL
Achtung: Die dll is nicht Multi threading fähig, also selbst entsprechende Serialisierungen von Aufrufen implementieren!ErnstF wrote:ich verwende die Membrain DLL in einer mehrprozessor multihtreading Architektur mit sehr vielen gleichzeitig geladenen Netzen.
ErnstF wrote:Vor dem Aufruf wichtiger Lern- und Berechnungsfunktionen möchte ich sicherstellen, dass auch wirklich das "richtige" Netz geladen und über die DLL richtig indiziert verwendet wird.
Genügt die Funktion 'GetSelectedNet' hierfür nicht?
Viele Grüße
Thomas Jetter
Re: Fehlende Funktion für Hidden Neurons in MembrainDLL
Danke für den Hinweis.
GetSelectedNet hatte ich bereits als erste Absicherung implementiert.
Da diese Funktion allerings ebenfalls "nur" den Index auf das interne Array liefert schien sie mir ebenfalls anfällig für race conditions, weswegen ich eine weitere "line of defence" einziehen wollte.![Geek :geek:](./images/smilies/icon_e_geek.gif)
Über den Zugriff auf ein im Netz gespeichertes, eindeutiges Objekt wäre die Prüfung meiner Ansicht nach einfachst lösbar.
Ich habe die Zugriffs- und Validierungsfunktionen nun shared und mit entsprechenden synclocks implementiert.
Danke +Grüße
Ernst
GetSelectedNet hatte ich bereits als erste Absicherung implementiert.
Da diese Funktion allerings ebenfalls "nur" den Index auf das interne Array liefert schien sie mir ebenfalls anfällig für race conditions, weswegen ich eine weitere "line of defence" einziehen wollte.
![Geek :geek:](./images/smilies/icon_e_geek.gif)
Über den Zugriff auf ein im Netz gespeichertes, eindeutiges Objekt wäre die Prüfung meiner Ansicht nach einfachst lösbar.
Ich habe die Zugriffs- und Validierungsfunktionen nun shared und mit entsprechenden synclocks implementiert.
Danke +Grüße
Ernst