Hallo,
ich habe mich vor Jahren schon einmal mit Membrain beschäftigt, hatte dann aber keine Zeit mehr dazu.
Aktuell hats mich wieder gepackt....leider habe ich die Hälfte vergessen.
Trotz tagelangem Googeln habe ich keinerlei Infomationen gefunden wie ich praktisch fortlaufende
zeitkritische Daten in ein Netzwerk eingebe. Mit Excellisten trainieren und Validieren funktioniert.
Beispiel Wetterstation. Pro Minute fällt ein Wert für Luftdruck, Temperatur, Luftfeuchtigkeit, Windgeschwindigkeit,
Helligkeit, Uhrzeit usw. an. Diese Daten werden von Arduinosensoren auf ein Display geschickt. Ich möchte eine Vorhersage
für den nächsten bzw übernächsten Tag.
Um bei dem Beispiel zu bleiben, wie bekomme ich jetzt diese 6 Werte jede Minute zeitgleich automatisch in 6 Eingangsneuronen?
Excellisten sind ja keine Echtzeitdaten
Ich hoffe die Frage ist verständlich...wie ist die Anbindung an das Netzwerg (Übergabe)?
Gruß Bernd
Echtzeit Dateneingabe
Re: Echtzeit Dateneingabe
Hallo,
die Frage bezieht sich auf den Produktivbetrieb eines neuronalen Netzes mit MemBrain. Dazu gibt es grundsätzlich folgende drei Möglichkeiten:
1.) Verwendung der MemBrain DLL
2.) Verwendung von MemBrain Scripting
3.) Verwendung eines Netzes über von MemBrain gegeniertem C-Code
Die Auswahl der richtigen Möglichkeit hängt sehr von der geplanten und vorhandenen Infrastruktur ab: Welche Software soll letzten Endes den Vorhersagevorgang auslösen? Wie soll die Vorhersage weiterverarbeitet und/oder angezeigt werden? Auf welcher Plattform?
Beispiel 1:
Es existiert bereits eine Software oder es soll eine entwickelt werden, die das MemBrain Netz nutzt und die Wetterprognose verarbeitet/zur Anzeige bringt, etc. Diese SW läuft unter Windows. In diesem Fall ist sicherlich die optimale Lösung, die MemBrain DLL in diese SW einzubinden (z.B. aus C++, Java oder C# heraus). Die SW würde dann mit Hilfe der MemBrain DLL das trainierte Netz laden. Dann würde sie regelmäßig (z.B. jede Minute) mit dem/den Aduino(s) reden (z.B. per serieller Schnittstelle), die Daten einsammeln, per MemBrain DLL an das Netz anlegen, die Prognose per MemBrain DLL berechnen, das Ergebnis über die MemBrain DLL abrufen und anzeigen/weiterverarbeiten.
Zusätzlich könnte eine solche SW vom Benutzer das tatsächlich beobachtete Wetter abfragen und mit dieser Information das Netz sogar weiter trainieren.
Beispiel 2:
MemBrain soll/kann als SW permanent auf dem Windows-Rechner laufen. MemBrain selbst soll die Daten von dem/den Arduino(s) abfragen und die Prognose anzeigen/verarbeiten.
In diesem Fall ist das MemBrain Scripting die richtige Möglichkeit. Damit lassen sich mächtige und auch performante Programme schreiben. Auch debuggen inkl. Breakpoints und Watch etc. kann man komfortabel im MemBrain Script Debugger. Die GUI ist allerdings sehr eingeschränkt: Die Wetterprognose könnte allenfalls in der Logausgabe des Scripts oder als Aktivität des Neurons am Bildschirm angezeigt werden. Allerdings kann man mit dem Scripting auch beliebige Dateioperationen implementieren. Die Ein- und Ausgabe könnte also über Dateien stattfinden, die ein anderes Programm erzeugt oder liest. Serielle Kommunikation über COM-Ports kann über die Scriptsprache auch direkt implementiert werden.
Beispiel 3:
Die Wetterprognose soll auf einem Mikrocontroller implementiert werden oder auch auf einer Non-Windows Plattform.
In diesem Fall exportiert man das trainierte Netz in C-Code. Die generierten Dateien, zusammen mit der migelieferten C-Code Liobrary, bindet man in eine C- oder C++ Software für die Zielplattform (z.B. Mikrocontroller) ein.
Ein Nachtrainieren ist damit allerdings nicht möglich, ein solches Netz ist "eingefroren".
Welcher Fall liegt denn vor? Oder sieht die Situation ganz anders aus? Auf der Basis sollten wir dann weiter schauen/diskutieren.
Viele Grüße
die Frage bezieht sich auf den Produktivbetrieb eines neuronalen Netzes mit MemBrain. Dazu gibt es grundsätzlich folgende drei Möglichkeiten:
1.) Verwendung der MemBrain DLL
2.) Verwendung von MemBrain Scripting
3.) Verwendung eines Netzes über von MemBrain gegeniertem C-Code
Die Auswahl der richtigen Möglichkeit hängt sehr von der geplanten und vorhandenen Infrastruktur ab: Welche Software soll letzten Endes den Vorhersagevorgang auslösen? Wie soll die Vorhersage weiterverarbeitet und/oder angezeigt werden? Auf welcher Plattform?
Beispiel 1:
Es existiert bereits eine Software oder es soll eine entwickelt werden, die das MemBrain Netz nutzt und die Wetterprognose verarbeitet/zur Anzeige bringt, etc. Diese SW läuft unter Windows. In diesem Fall ist sicherlich die optimale Lösung, die MemBrain DLL in diese SW einzubinden (z.B. aus C++, Java oder C# heraus). Die SW würde dann mit Hilfe der MemBrain DLL das trainierte Netz laden. Dann würde sie regelmäßig (z.B. jede Minute) mit dem/den Aduino(s) reden (z.B. per serieller Schnittstelle), die Daten einsammeln, per MemBrain DLL an das Netz anlegen, die Prognose per MemBrain DLL berechnen, das Ergebnis über die MemBrain DLL abrufen und anzeigen/weiterverarbeiten.
Zusätzlich könnte eine solche SW vom Benutzer das tatsächlich beobachtete Wetter abfragen und mit dieser Information das Netz sogar weiter trainieren.
Beispiel 2:
MemBrain soll/kann als SW permanent auf dem Windows-Rechner laufen. MemBrain selbst soll die Daten von dem/den Arduino(s) abfragen und die Prognose anzeigen/verarbeiten.
In diesem Fall ist das MemBrain Scripting die richtige Möglichkeit. Damit lassen sich mächtige und auch performante Programme schreiben. Auch debuggen inkl. Breakpoints und Watch etc. kann man komfortabel im MemBrain Script Debugger. Die GUI ist allerdings sehr eingeschränkt: Die Wetterprognose könnte allenfalls in der Logausgabe des Scripts oder als Aktivität des Neurons am Bildschirm angezeigt werden. Allerdings kann man mit dem Scripting auch beliebige Dateioperationen implementieren. Die Ein- und Ausgabe könnte also über Dateien stattfinden, die ein anderes Programm erzeugt oder liest. Serielle Kommunikation über COM-Ports kann über die Scriptsprache auch direkt implementiert werden.
Beispiel 3:
Die Wetterprognose soll auf einem Mikrocontroller implementiert werden oder auch auf einer Non-Windows Plattform.
In diesem Fall exportiert man das trainierte Netz in C-Code. Die generierten Dateien, zusammen mit der migelieferten C-Code Liobrary, bindet man in eine C- oder C++ Software für die Zielplattform (z.B. Mikrocontroller) ein.
Ein Nachtrainieren ist damit allerdings nicht möglich, ein solches Netz ist "eingefroren".
Welcher Fall liegt denn vor? Oder sieht die Situation ganz anders aus? Auf der Basis sollten wir dann weiter schauen/diskutieren.
Viele Grüße
Thomas Jetter
Re: Echtzeit Dateneingabe
Hallo und wow, solch eine ausführliche Antwort hatte ich nicht erwartet.!
Aktuell wäre Beispiel 2 am naheliegendsten. Mit Scripten kenne ich mich leider noch nicht aus. Aber Programmierkenntnisse habe ich. Aktuell kann ich alle Daten problemlos auf den Com Port umleiten. Ok, dann arbeite ich mich in das Thema Scripte erstmal ein. Beispiele habe ich.
Recht herzlichen Dank erst einmal für die Hilfe.
Grüße Bernd
Aktuell wäre Beispiel 2 am naheliegendsten. Mit Scripten kenne ich mich leider noch nicht aus. Aber Programmierkenntnisse habe ich. Aktuell kann ich alle Daten problemlos auf den Com Port umleiten. Ok, dann arbeite ich mich in das Thema Scripte erstmal ein. Beispiele habe ich.
Recht herzlichen Dank erst einmal für die Hilfe.
Grüße Bernd