Hallo meine fleißigen Kollegen,
Da bei den meisten scikitlearn Modellen (Machine learning) das Problem bestand dass diese kaum in ausschließlich Code umgewandelt werden können,
stellt sich die Frage ob es bei neuronalen Netzen in tensorflow das gleiche Problem gibt
Oder ob ich problemlos das trainierte netz in 100% Code umwandeln kann und dann a la Copy&Paste in eine Java ähnliche Sprache ohne libaries einfügen kann (samt kleinen Änderungen ";" etc)
Ansonsten wäre es vorerst für mein Ziel/projekt Zeitverschwendung neuronale Netze in tensorflow zu lernen (welche Alternativen gibt es für mein Ziel)
Neuronales Netzwerk komplett extrahieren für andere Programmiersprache?
Was heisst denn "ausschliesslich in Code"? Auch tensorflow ist nur code. Warum kannst du das nicht benutzen? Und theoretisch kannst du die trainierten Gewichte eines Tensor-Flow-Models natuerlich auch von Java durchrechnen lassen. 1000mal langsamer oder so, aber "gehen" tut das. Dazu musst du "nur" tensorflow nach Java portieren (nativ natuerlich, nicht nur ein binding).
- __blackjack__
- User
- Beiträge: 14044
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@__deets__: Ich vermute mal es geht Bayne immer noch um so etwas wie in seinem anderen Thema: Scikit learn model als Code ausschreiben?.
Also irgendwas in Python trainieren und dann aus dem Ergebnis Java-Code generieren der keine weiteren Abhängigkeiten hat.
@Bayne: Falls meine Vermutung richtig ist: Müsste da ja erst einmal die Randbedingung erfüllt sein, dass man ein trainiertes Modell rein als Code ohne zusätzliche Abhängigkeiten sinnvoll darstellen kann.
Wenn Du so etwas für Java haben möchtest, warum verwendest Du dann nicht entsprechende Java-Bibliotheken? Ich kann mir kaum vorstellen, dass es da nichts für neuronale Netzwerke geben sollte. Ähm, Tensorflow selbst zum Beispiel hat ja auch eine Java-API.
Also irgendwas in Python trainieren und dann aus dem Ergebnis Java-Code generieren der keine weiteren Abhängigkeiten hat.
@Bayne: Falls meine Vermutung richtig ist: Müsste da ja erst einmal die Randbedingung erfüllt sein, dass man ein trainiertes Modell rein als Code ohne zusätzliche Abhängigkeiten sinnvoll darstellen kann.
Wenn Du so etwas für Java haben möchtest, warum verwendest Du dann nicht entsprechende Java-Bibliotheken? Ich kann mir kaum vorstellen, dass es da nichts für neuronale Netzwerke geben sollte. Ähm, Tensorflow selbst zum Beispiel hat ja auch eine Java-API.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
Das hab' ich mir auch schon gedacht. Aber er will ja offensichtlich genau keine 3rd-party-libs. Warum auch immer. Vielleicht weil "Java-aehnlich" und nicht Java? Wer weiss das schon... da gibt's glaube ich ne Menge Unbekannte hier im Spiel, die uns nicht mitgeteilt werden.
@__deets__:
@__blackjack__:
Genau, mit "Java ähnlich" ist nicht Java selbst gemeint, sondern nur die ähnliche Syntax.
Ich will eine ein model trainieren welches auf basis von Zeitsequenzen von Werten zukünftige werte voraussagen kann.
Die API Möglichkeiten zur besagten Sprache sind zwar durchführbar, jedoch gibt es in der Sprache welche ich nutzen möchte einen optimizer (für weitere Parameter die weniger mit dem netz zutun haben bzw darauf aufbauen) welchen ich aus Genauigkeitsgründen unbedingt verwenden möchte. (Über eine API funktioniert das ganze leider nicht so wie es sollte.)
Dafür benötige ich jedoch den Code des Netzes unabhängig von diversen libaries.
@__blackjack__:
Genau, mit "Java ähnlich" ist nicht Java selbst gemeint, sondern nur die ähnliche Syntax.
Ich will eine ein model trainieren welches auf basis von Zeitsequenzen von Werten zukünftige werte voraussagen kann.
Die API Möglichkeiten zur besagten Sprache sind zwar durchführbar, jedoch gibt es in der Sprache welche ich nutzen möchte einen optimizer (für weitere Parameter die weniger mit dem netz zutun haben bzw darauf aufbauen) welchen ich aus Genauigkeitsgründen unbedingt verwenden möchte. (Über eine API funktioniert das ganze leider nicht so wie es sollte.)
Dafür benötige ich jedoch den Code des Netzes unabhängig von diversen libaries.
Zuletzt geändert von Bayne am Sonntag 9. Juni 2019, 18:18, insgesamt 1-mal geändert.
Und ist es nicht möglich die weights und bias vom fertigen model ausgeben zu lassen, sodass ich sie manuell in Code umschreibe?
Dann müssten die jeweiligen Features der timeseries nur normalisiert werden und mit den gewichten multipliziert werden, sofern ich das
Prinzip richtig verstehe(?) (+ Wohin der bias in den gleichungen?)
Dann müssten die jeweiligen Features der timeseries nur normalisiert werden und mit den gewichten multipliziert werden, sofern ich das
Prinzip richtig verstehe(?) (+ Wohin der bias in den gleichungen?)
Wenn du tensor Flow komplett nachprogrammiert hast, dann beinhaltet das natürlich auch, das du dessen Gewichte aus gegebenen Dateien einlesen kannst. Und komplett nachprogrammieren heißt komplett nachprogrammieren. Du bist derjenige, der ein mysteriöses System hat, auf dem das nicht läuft. Also musst du es eben programmieren.
Um das nochmal etwas deutlicher zu machen: es ist nicht damit getan, einfach irgendwie die Daten eines trainierten Netzes zu haben. Ich schreibe dir in 30Sekunden ein Programm, das liest und verarbeitet jede gegebene Worddatei. Es macht nichts SINNVOLLES damit, aber es verarbeitet sie. Wenn dabei aber ein lesbares, layoutetes Dokument rauskommen soll - dann muss ich Word nach programmieren. Und so,ist das bei dir auch. Du musst jeden Aspekt von tensorflow verstehen & implementieren, wenn du sowas machen willst. Ob das geht, kann ich nicht beurteilen. Du hast ja bis dato gründlich vermieden, Details zur von dir genannten Plattform zu nennen.
sorry, wollte nicht ganz zu mysteriös wirken
Es handelt sich um die sprache "MQL4" bzw "MQL5" ( Daytrading zeug und so weiter)
Jedenfalls soll das Netz mir Kaufsignalse (1=kaufen, 0=nichts tun, -1 = verkaufen) ausgeben.
Eine Verbindung mittels ZeroMQ oder ähnlichem (Sockets) ist möglich jedoch nur gegenwärtig. Damit meine ich, dass ich Positionen zwar eröffnen kann, jedoch nur reale.
Was ich nämlich eigentlich will ist auf den sogenannten "Strategy Tester" zugreifen zu können, der mögliche parameter für den genutzten Algorythmus unter möglichst realen umständen testet und mir sehr genaue ergebnisdaten liefert.
Ich habe keine idee wie das klappen kann. (kaum software engineering skills)

Jedenfalls soll das Netz mir Kaufsignalse (1=kaufen, 0=nichts tun, -1 = verkaufen) ausgeben.
Eine Verbindung mittels ZeroMQ oder ähnlichem (Sockets) ist möglich jedoch nur gegenwärtig. Damit meine ich, dass ich Positionen zwar eröffnen kann, jedoch nur reale.
Was ich nämlich eigentlich will ist auf den sogenannten "Strategy Tester" zugreifen zu können, der mögliche parameter für den genutzten Algorythmus unter möglichst realen umständen testet und mir sehr genaue ergebnisdaten liefert.
Ich habe keine idee wie das klappen kann. (kaum software engineering skills)
Joa. Hättest du auch in deinem ersten Post schon erwähnen können. Denn dann findet sich zb https://www.mql5.com/de/articles/5691
Du sollest also tensorflow oder was auch immer aus scikit learn nutzen können.
Du sollest also tensorflow oder was auch immer aus scikit learn nutzen können.
kenne den artikel.
"Leider ist die aktuelle Implementierung des Socket-Clients in MetaTrader 5 nicht für den Betrieb im Strategy-Tester geeignet, so dass kein vollständiges Testen und Messen der Leistung dieser Lösung durchgeführt wurde. Lassen Sie uns auf weitere Updates der Socket-Funktionen warten."
Den Optimizer bzw Strategy Tester in kombination besagten python libaries will ich nutzen.
überlege den source code ähnlicher libaries ( vorzugsweise machine learning libaries aus java) in MQL5 zu copy & pasten, hat jemand eine empfehlung, welche libaries qualitativ an Scikitlearn und tensorflow rankommen (obwohl es tensorflow ja bereits für java gibt)
"Leider ist die aktuelle Implementierung des Socket-Clients in MetaTrader 5 nicht für den Betrieb im Strategy-Tester geeignet, so dass kein vollständiges Testen und Messen der Leistung dieser Lösung durchgeführt wurde. Lassen Sie uns auf weitere Updates der Socket-Funktionen warten."
Den Optimizer bzw Strategy Tester in kombination besagten python libaries will ich nutzen.
überlege den source code ähnlicher libaries ( vorzugsweise machine learning libaries aus java) in MQL5 zu copy & pasten, hat jemand eine empfehlung, welche libaries qualitativ an Scikitlearn und tensorflow rankommen (obwohl es tensorflow ja bereits für java gibt)
Keine Ahnung was das heißen soll. Sind das Sandboxen? Geht es also nur darum das testen zu können? Oder geht es im allgemeinen Betrieb auch nicht?
So oder so ist das alles sehr speziell. Du wirst mehr Erfolg haben deine Probleme in deren Foren zu lösen als hier. Nicht zuletzt weil du ja genau KEIN Python verenden willst.
So oder so ist das alles sehr speziell. Du wirst mehr Erfolg haben deine Probleme in deren Foren zu lösen als hier. Nicht zuletzt weil du ja genau KEIN Python verenden willst.
Diese forum ist schon meine 3. oder 4. Anlaufstelle
, lerner konnten die mir dort auch weniger weiterhelfen.
Da hast du recht, der Eigentliche Betrieb ist kein Problem, der StrategieTester (zur optimierung weiterer parameter die mit dem netz nichts zutun haben) wird nicht ganz in dieser lösung funktionieren.
Lässt sich die libary (tensorflow oder scikitlearn) denn irgendwie manuell abändern/ um eine klasse ergänzen? (wenn der pythoncode schon nicht aus der pickle datei rauskommen kann)

Da hast du recht, der Eigentliche Betrieb ist kein Problem, der StrategieTester (zur optimierung weiterer parameter die mit dem netz nichts zutun haben) wird nicht ganz in dieser lösung funktionieren.
Lässt sich die libary (tensorflow oder scikitlearn) denn irgendwie manuell abändern/ um eine klasse ergänzen? (wenn der pythoncode schon nicht aus der pickle datei rauskommen kann)