Schöner Artikel. Das Vorhersagediagramm zu den Testdaten ist enttäuschend. Sie könnten genauso gut die ganze DNN-Modellierung/Training überspringen und einfach eine Vorhersage des nächsten Preises gleich dem letzten bekannten Preis verwenden. Ich wette, die Vorhersagegenauigkeit eines solchen trivialen Modells wird höher sein als die Ihres DNN-Modells. Ich schlage vor, diese beiden Genauigkeiten zu vergleichen und sie hier zu zeigen. Im Allgemeinen ist die Verwendung von DNN zur Preisvorhersage eine schlechte Idee. Sie eignen sich besser für die Klassifizierung von Preismustern (z. B. Kaufen, Verkaufen, Halten). Außerdem ist die Anzahl der Gewichte in Ihrem DNN astronomisch. Das muss eine Überanpassung sein.
Vladimir #: Schöner Artikel. Das Vorhersagediagramm zu den Testdaten ist enttäuschend. Sie könnten genauso gut die ganze DNN-Modellierung/Training überspringen und einfach eine Vorhersage des nächsten Preises gleich dem letzten bekannten Preis verwenden. Ich wette, die Vorhersagegenauigkeit eines solchen trivialen Modells wird höher sein als die Ihres DNN-Modells. Ich schlage vor, diese beiden Genauigkeiten zu vergleichen und sie hier zu zeigen. Im Allgemeinen ist die Verwendung von DNN zur Preisvorhersage eine schlechte Idee. Sie eignen sich besser für die Klassifizierung von Preismustern (z. B. Kaufen, Verkaufen, Halten). Außerdem ist die Anzahl der Gewichte in Ihrem DNN astronomisch. Das muss eine Überanpassung sein.
Danke, Vladimir. Nur zur Diskussion: Wenn es die Zeit erlaubt, würde ich dieses Modell modifizieren, um eine Klassifizierung zum Vergleich durchzuführen.
Bitte lassen Sie mich wissen, wenn Sie Ideen haben.
Das Tutorial gibt eine Eingabe von einem Stapel SAMPLE_SIZE Anzahl von Eingaben schließen, Sie wollen einen Stapel input_count Eingaben.
Außerdem verwendet Ihr Modell keine Floats als Eingaben, sondern Doubles,
Anmerkung des Moderators: Dieser Beitrag ist nicht mehr in der richtigen Reihenfolge, da die nachfolgenden Beiträge aus einem anderen Thema verschoben wurden. Bitte lesen Sie den folgenden Beitrag.
Hallo MQL5-Gemeinschaft, Ich habe versucht, dieses Tutorial zu folgen, wie ONNX in Ihre EAs zu verwenden. In dem Tutorial ein neuronales Netzwerk war das Modell der Wahl, ich habe einen Gradient Boosted Baum verwendet.
Ich werde den Prozess zusammenfassen, mit dem das Modell trainiert wurde.
1) Das Modell wurde mit 5 Eingaben trainiert, OHLC und Höhe, Höhe wird berechnet als ((H + L) / 2) - C.
2) Das Modell ist ein binärer Klassifikator, der darauf abzielt, die nächste Kerze entweder als UP (1) oder DOWN (0) zu klassifizieren.
Die zum Trainieren des Modells verwendeten Daten.
3) Das Modell wurde dann in das ONNX-Format exportiert
Darstellung des ONNX-Modells.
Um das Modell zum Laufen zu bringen, bin ich vom Code im Tutorial abgewichen und habe den Code weiter bearbeitet, um das ONNX-Modell zum Laufen zu bringen, aber jetzt weiß ich wirklich nicht, was ich falsch mache. Ich erhalte immer eine Fehlermeldung, dass das Handle für das Modell ungültig ist.
Ich habe den MQL5-Code unten angehängt.
Ich fasse nun die Schritte zusammen, die ich in meinem Code unternommen habe und die vom Tutorial abweichen, und ich erkläre auch, warum ich vom Tutorial abgewichen bin
1) Zeile 57: Einstellen der Modell-Eingangsform. Im Lernprogramm wurden 3 Dimensionen verwendet, um die Eingangs- und Ausgangsform festzulegen, d. h. {1,SAMPLE_SIZE,1}; Als ich diesen Ansatz verfolgte, erhielt ich jedoch immer wieder eine Fehlermeldung, genauer gesagt Fehler 5808. Nach dem üblichen "Trail and Error"-Prozess erkannte ich, dass der Fehler verschwand, wenn ich nur 1 Dimension, die Anzahl der Eingänge, verwendete.
2) ZEILE 68: Einstellen der Form der Modellausgabe.
Dieselbe Logik wie oben.
Die anderen Abweichungen, die ich vorgenommen habe, wirken sich nicht auf das Modell aus, z. B. habe ich die Zeit mit einer Logik verfolgt, die ich intuitiver fand als die im Lernprogramm implementierte Logik. Ich brauchte die Eingaben nicht zu normalisieren, da es sich um ein baumbasiertes Modell handelt.
Wenn Sie andere Fehler finden, die ich gemacht habe, wäre ich Ihnen dankbar für Ihren Hinweis.
//+------------------------------------------------------------------+//|ONNX.mq5 |//|Urheberrecht 2023, MetaQuotes Ltd. |//| https://www.mql5.com |//+------------------------------------------------------------------+//Meta-Eigenschaften#property copyright"Gamuchirai Zororo Ndawana"#property link"https://www.mql5.com"#property version"1.00"//Handelsbibliothek#include <Trade\Trade.mqh>
//Lesen unseres ONNX-Modells und Speichern in einem Daten-Array#resource "\\Files\\Python\\Volatility_75_EBM.onnx"asuchar ExtModel[]
//Benutzerdefinierte Schlüsselwortdefinitionen#define SAMPLE_SIZE 998#define PRICE_UP 1#define PRICE_DOWN 0//Globale Variablenlong ExtHandle = INVALID_HANDLE;
int ExtPredictedClass = -1;
datetime ExtNextBar = 0;
datetime ExtNextMinute =0;
float ExtMin = 0;
float ExtMax = 0;
double min_volume;
CTrade ExtTrade;
//Eingabenintinput lot_mutliple = 1; //Wie viele Male größer als die Mindestanzahl sollten wir eingeben?intOnInit()
{
//Prüfen, ob das Symbol und der Zeitrahmen den Ausbildungsbedingungen entsprechenif(_Symbol != "Volatility 75 Index" || _Period != PERIOD_M1)
{
Comment("Model must be used with the Volatility 75 Index on the 1 Minute Chart");
return(INIT_FAILED);
}
//Erstellen eines ONNX-Modells aus unserem Datenfeld
ExtHandle = OnnxCreateFromBuffer(ExtModel,ONNX_DEFAULT);
Print("ONNX Create from buffer status ",ExtHandle);
//Prüfen, ob der Handle gültig istif(ExtHandle == INVALID_HANDLE)
{
Comment("ONNX create from buffer error ", GetLastError());
return(INIT_FAILED);
}
//Eingabeform festlegenlong input_count = OnnxGetInputCount(ExtHandle);
constlong input_shape[] = {input_count};
Print("Total model inputs : ",input_count);
if(!OnnxSetInputShape(ExtHandle,0,input_shape))
{
Comment("ONNX set input shape error ", GetLastError());
OnnxRelease(ExtHandle);
return(INIT_FAILED);
}
//Setzen der Ausgabeformlong output_count = OnnxGetOutputCount(ExtHandle);
constlong output_shape[] = {output_count};
Print("Total model outputs : ",output_count);
if(!OnnxSetOutputShape(ExtHandle,0,output_shape))
{
Comment("ONNX set output shape error ", GetLastError());
OnnxRelease(ExtHandle);
return(INIT_FAILED);
}
//Abfrage des zulässigen Mindesthandelsvolumens
min_volume = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
return(INIT_SUCCEEDED);
//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Experten-Deinitialisierungsfunktion|//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//---if(ExtHandle != INVALID_HANDLE)
{
OnnxRelease(ExtHandle);
ExtHandle = INVALID_HANDLE;
}
}
//+------------------------------------------------------------------+//| Experten-Tick-Funktion|//+------------------------------------------------------------------+voidOnTick()
{
//---//Zeitmessgerätestaticdatetime time_stamp;
datetime time = iTime(_Symbol,PERIOD_M1,0);
//Neuer Balken prüfenif(time_stamp != time)
{
time_stamp = time;
PredictedPrice();
Print("Predicted class: ",ExtPredictedClass);
if(ExtPredictedClass == PRICE_UP || ExtPredictedClass == PRICE_DOWN)
if(PositionSelect(_Symbol))
CheckForClose();
if(PositionsTotal() == 0)
CheckForOpen();
}
}
//+------------------------------------------------------------------+void CheckForOpen(void)
{
ENUM_ORDER_TYPE signal = WRONG_VALUE;
//Signale prüfenif(ExtPredictedClass == PRICE_DOWN)
{
signal = ORDER_TYPE_SELL;
}
elseif(ExtPredictedClass == PRICE_UP)
{
signal = ORDER_TYPE_BUY;
}
if(signal != WRONG_VALUE && TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
{
double price, sl = 0 , tp = 0;
double bid = SymbolInfoDouble(_Symbol,SYMBOL_BID);
double ask = SymbolInfoDouble(_Symbol,SYMBOL_ASK);
if(signal == ORDER_TYPE_SELL)
{
price = bid;
}
else
{
price = ask;
}
Print("Opening a new position: ",signal);
ExtTrade.PositionOpen(_Symbol,signal,min_volume,price,0,0);
}
}
void CheckForClose(void)
{
bool bsignal = false;
long type = PositionGetInteger(POSITION_TYPE);
if(type == POSITION_TYPE_BUY && ExtPredictedClass == PRICE_DOWN)
bsignal = true;
if(type == POSITION_TYPE_SELL && ExtPredictedClass == PRICE_UP)
bsignal = true;
if(bsignal && TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
{
ExtTrade.PositionClose(_Symbol,3);
CheckForOpen();
}
}
void PredictedPrice(void)
{
vectorf output_data(1);
float open = float(iOpen(_Symbol,PERIOD_M1,1));
float high = float(iHigh(_Symbol,PERIOD_M1,1));
float low = float(iLow(_Symbol,PERIOD_M1,1));
float close = float(iClose(_Symbol,PERIOD_M1,1));
float height = float((((high + low) / 2) - close));
Print("Current open ",open);
Print("Current high ",high);
Print("Current low ",low);
Print("Current close ",close);
Print("Current height ",height);
vectorf input_data = {open,high,low,close,height};
Print("Input vector: ",input_data);
if(!OnnxRun(ExtHandle,ONNX_NO_CONVERSION,input_data,output_data))
{
Print("ONNX run error : ",GetLastError());
OnnxRelease(ExtHandle);
}
int predicted = int(output_data[0]);
Print("Model prediction: ",predicted);
Print(output_data);
if(predicted == 1)
{
ExtPredictedClass = PRICE_UP;
}
elseif(predicted == 0)
{
ExtPredictedClass = PRICE_DOWN;
}
Comment("Model Prediction: ", ExtPredictedClass);
}
Hello MQL5 community, I've been trying to follow this tutorial on how to use ONNX in your EA's. In the tutorial a neural network was the model of choice, I've used a gradient boosted tree.
Ich habe das Modell mit dem Python-Paket InterpretML erstellt und es mit ebm2onnx nach ONNX exportiert.
Ich werde den Prozess zusammenfassen, mit dem das Modell trainiert wurde.
1) Das Modell wurde mit 5 Eingaben trainiert, OHLC und Höhe, Höhe wird berechnet als ((H + L) / 2) - C.
2) Das Modell ist ein binärer Klassifikator, der darauf abzielt, die nächste Kerze entweder als UP (1) oder DOWN (0) zu klassifizieren.
Die zum Trainieren des Modells verwendeten Daten.
3) Das Modell wurde dann in das ONNX-Format exportiert
Darstellung des ONNX-Modells.
Um das Modell zum Laufen zu bringen, bin ich vom Code im Tutorial abgewichen und habe den Code weiter bearbeitet, um zu versuchen, das ONNX-Modell zum Laufen zu bringen, aber jetzt weiß ich wirklich nicht, was ich falsch mache. Ich erhalte immer eine Fehlermeldung, dass das Handle für das Modell ungültig ist.
Ich habe den MQL5-Code unten angehängt.
Ich fasse nun die Schritte zusammen, die ich in meinem Code unternommen habe und die vom Tutorial abweichen, und ich erkläre auch, warum ich vom Tutorial abgewichen bin
1) ZEILE 57: Einstellen der Modell-Eingangsform. Im Lernprogramm wurden 3 Dimensionen verwendet, um die Eingangs- und Ausgangsform festzulegen, d. h. {1,SAMPLE_SIZE,1}; Als ich diesen Ansatz verfolgte, erhielt ich jedoch immer wieder einen Fehler, genauer gesagt den Fehler 5808. Nach dem üblichen "Trail and Error"-Prozess erkannte ich, dass der Fehler verschwand, wenn ich nur 1 Dimension, die Anzahl der Eingänge, verwendete.
2) ZEILE 68: Einstellen der Form der Modellausgabe.
Dieselbe Logik wie oben.
Die anderen Abweichungen, die ich vorgenommen habe, wirken sich nicht auf das Modell aus, z. B. habe ich die Zeit mit einer Logik verfolgt, die ich intuitiver fand als die im Lernprogramm implementierte Logik. Ich brauchte die Eingaben nicht zu normalisieren, da es sich um ein baumbasiertes Modell handelt.
Wenn Sie andere Fehler finden, die ich gemacht habe, wäre ich Ihnen dankbar für Ihren Hinweis.
Vielen Dank für die Mitteilung Sitan, ich habe angewandt, was Sie darauf hingewiesen, aber der Fehler ist immer noch da
Ein Stapel input_count Eingaben.
Eingabe auf double setzen
Fehlermeldung.
Es scheint, dass MQL5 noch nicht (bzw. ONNXMLTools noch nicht) EBM's ONNX unterstützt:
Wenn Sie die ONNX-Anhänge (insbesondere model.eurusd.D1.10.class.onnx, das 4 Eingänge verwendet) von https://www.mql5.com/de/articles/12484 heranziehen und Netron(Web-Version) verwenden, um die onnx-Dateien zu visualisieren, werden Sie die Unterschiede sehen.
Ich denke, dass die folgenden zwei Artikel Ihnen helfen werden, die Zusammenhänge besser zu verstehen:
Object-oriented programming enables creation of a more compact code that is easy to read and modify. Here we will have a look at the example for three ONNX models.
Wir versuchen, ein neuronales Netzwerk von Keras mit 11 Prädiktoren zu einem Zeitpunkt (Stapelgröße 32) zu verwenden, um Vorhersagen auf dem XauUsd zu machen (wobei die Ausgabe eine einzelne Zahl zwischen 0 und 1 ist). Zunächst laden wir in von OnnxCreatefrombuffer (weil OnnxCreate selbst nicht für uns arbeiten), dann erhalten wir immer einen Fehler auf der OnnxRun Bühne, wo ich beide Fehler unten angehängt haben. Jede Hilfe, welche Dimension für die Eingabe umzuformen ist, welches Format unser Prädiktorvektor haben sollte (wenn es überhaupt ein Vektor sein sollte?), oder einfach jede Hilfe oder Vorschläge mit Syntax, um diese Fehler zu beheben, wäre fantastisch. Wir haben versucht, um alle Arten von Kombinationen von 32, 1, 11 Vektoren und kein Glück und wirklich keine Idee mit den nächsten Schritten umzuformen. Vielen Dank für jeden, der helfen kann! Ben.
' Fehler 5808'
ONNX: Eingabeparameter #0 Tensor hat falsche Dimension [0], versuche OnnxSetInputShape zu verwenden'
ONNX: Ungültige Größe des Eingabeparameters #0, erwartet wurden 1408 Bytes statt 480'
Kann mir jemand helfen, weil am Ende des Prozesses in Python folgender Fehler auftaucht: AttributeError: 'Sequential' object has no attribute 'output_names'. Ich weiß nicht viel über Python oder Programmierung. Daher wäre ich für jede Hilfe dankbar! Ich danke Ihnen.
Kann mir jemand helfen, denn am Ende des Prozesses in Python kommt folgender Fehler heraus: AttributeError: 'Sequential' Objekt hat kein Attribut 'output_names'. Ich weiß nicht viel über Python oder Programmierung. Jede Hilfe ist also willkommen! Danke!
Alberto Henrique Tacoronte #: Hallo meine Herren. Kann mir jemand helfen, denn am Ende des Python-Prozesses kommt folgende Fehlermeldung: AttributeError: 'Sequential' object has no attribute 'output_names'. Ich weiß nicht viel über Python oder Programmierung. Daher wäre ich für jede Hilfe dankbar! Ich danke Ihnen.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Schöner Artikel. Das Vorhersagediagramm zu den Testdaten ist enttäuschend. Sie könnten genauso gut die ganze DNN-Modellierung/Training überspringen und einfach eine Vorhersage des nächsten Preises gleich dem letzten bekannten Preis verwenden. Ich wette, die Vorhersagegenauigkeit eines solchen trivialen Modells wird höher sein als die Ihres DNN-Modells. Ich schlage vor, diese beiden Genauigkeiten zu vergleichen und sie hier zu zeigen. Im Allgemeinen ist die Verwendung von DNN zur Preisvorhersage eine schlechte Idee. Sie eignen sich besser für die Klassifizierung von Preismustern (z. B. Kaufen, Verkaufen, Halten). Außerdem ist die Anzahl der Gewichte in Ihrem DNN astronomisch. Das muss eine Überanpassung sein.
Danke, Vladimir.
Nur zur Diskussion: Wenn es die Zeit erlaubt, würde ich dieses Modell modifizieren, um eine Klassifizierung zum Vergleich durchzuführen.
Bitte lassen Sie mich wissen, wenn Sie Ideen haben.
Das Tutorial gibt eine Eingabe von einem Stapel SAMPLE_SIZE Anzahl von Eingaben schließen, Sie wollen einen Stapel input_count Eingaben.
Außerdem verwendet Ihr Modell keine Floats als Eingaben, sondern Doubles,
Anmerkung des Moderators: Dieser Beitrag ist nicht mehr in der richtigen Reihenfolge, da die nachfolgenden Beiträge aus einem anderen Thema verschoben wurden. Bitte lesen Sie den folgenden Beitrag.
Hallo MQL5-Gemeinschaft, Ich habe versucht, dieses Tutorial zu folgen, wie ONNX in Ihre EAs zu verwenden. In dem Tutorial ein neuronales Netzwerk war das Modell der Wahl, ich habe einen Gradient Boosted Baum verwendet.
Ich habe das Modell mit dem InterpretML-Python-Paket erstellt und es mit ebm2onnx in ONNX exportiert.
Ich werde den Prozess zusammenfassen, mit dem das Modell trainiert wurde.
1) Das Modell wurde mit 5 Eingaben trainiert, OHLC und Höhe, Höhe wird berechnet als ((H + L) / 2) - C.
2) Das Modell ist ein binärer Klassifikator, der darauf abzielt, die nächste Kerze entweder als UP (1) oder DOWN (0) zu klassifizieren.
Die zum Trainieren des Modells verwendeten Daten.
3) Das Modell wurde dann in das ONNX-Format exportiert
Darstellung des ONNX-Modells.
Um das Modell zum Laufen zu bringen, bin ich vom Code im Tutorial abgewichen und habe den Code weiter bearbeitet, um das ONNX-Modell zum Laufen zu bringen, aber jetzt weiß ich wirklich nicht, was ich falsch mache. Ich erhalte immer eine Fehlermeldung, dass das Handle für das Modell ungültig ist.
Ich habe den MQL5-Code unten angehängt.
Ich fasse nun die Schritte zusammen, die ich in meinem Code unternommen habe und die vom Tutorial abweichen, und ich erkläre auch, warum ich vom Tutorial abgewichen bin
1) Zeile 57: Einstellen der Modell-Eingangsform.
Im Lernprogramm wurden 3 Dimensionen verwendet, um die Eingangs- und Ausgangsform festzulegen, d. h. {1,SAMPLE_SIZE,1}; Als ich diesen Ansatz verfolgte, erhielt ich jedoch immer wieder eine Fehlermeldung, genauer gesagt Fehler 5808. Nach dem üblichen "Trail and Error"-Prozess erkannte ich, dass der Fehler verschwand, wenn ich nur 1 Dimension, die Anzahl der Eingänge, verwendete.
2) ZEILE 68: Einstellen der Form der Modellausgabe.
Dieselbe Logik wie oben.
Die anderen Abweichungen, die ich vorgenommen habe, wirken sich nicht auf das Modell aus, z. B. habe ich die Zeit mit einer Logik verfolgt, die ich intuitiver fand als die im Lernprogramm implementierte Logik. Ich brauchte die Eingaben nicht zu normalisieren, da es sich um ein baumbasiertes Modell handelt.
Wenn Sie andere Fehler finden, die ich gemacht habe, wäre ich Ihnen dankbar für Ihren Hinweis.
Forum über Handel, automatisierte Handelssysteme und das Testen von Handelsstrategien
Diskussion des Artikels "Wie man ONNX-Modelle in MQL5 verwendet"
Stian Andreassen, 2023.12.08 20:51
Das Tutorial gibt eine Eingabe von einem Batch SAMPLE_SIZE Anzahl von Eingaben schließen, Sie wollen eine Charge von input_count Eingaben.
Außerdem verwendet Ihr Modell keine Floats als Eingaben, sondern Doubles,
Vielen Dank für den Hinweis, Sitan, ich habe angewendet, was Sie darauf hingewiesen haben, aber der Fehler ist immer noch da
Ein Stapel input_count Eingaben.

Eingabe auf double setzen
Fehlermeldung.
Hello MQL5 community, I've been trying to follow this tutorial on how to use ONNX in your EA's. In the tutorial a neural network was the model of choice, I've used a gradient boosted tree.
Ich habe das Modell mit dem Python-Paket InterpretML erstellt und es mit ebm2onnx nach ONNX exportiert.
Ich werde den Prozess zusammenfassen, mit dem das Modell trainiert wurde.
1) Das Modell wurde mit 5 Eingaben trainiert, OHLC und Höhe, Höhe wird berechnet als ((H + L) / 2) - C.
2) Das Modell ist ein binärer Klassifikator, der darauf abzielt, die nächste Kerze entweder als UP (1) oder DOWN (0) zu klassifizieren.
Die zum Trainieren des Modells verwendeten Daten.
3) Das Modell wurde dann in das ONNX-Format exportiert
Darstellung des ONNX-Modells.
Um das Modell zum Laufen zu bringen, bin ich vom Code im Tutorial abgewichen und habe den Code weiter bearbeitet, um zu versuchen, das ONNX-Modell zum Laufen zu bringen, aber jetzt weiß ich wirklich nicht, was ich falsch mache. Ich erhalte immer eine Fehlermeldung, dass das Handle für das Modell ungültig ist.
Ich habe den MQL5-Code unten angehängt.
Ich fasse nun die Schritte zusammen, die ich in meinem Code unternommen habe und die vom Tutorial abweichen, und ich erkläre auch, warum ich vom Tutorial abgewichen bin
1) ZEILE 57: Einstellen der Modell-Eingangsform.
Im Lernprogramm wurden 3 Dimensionen verwendet, um die Eingangs- und Ausgangsform festzulegen, d. h. {1,SAMPLE_SIZE,1}; Als ich diesen Ansatz verfolgte, erhielt ich jedoch immer wieder einen Fehler, genauer gesagt den Fehler 5808. Nach dem üblichen "Trail and Error"-Prozess erkannte ich, dass der Fehler verschwand, wenn ich nur 1 Dimension, die Anzahl der Eingänge, verwendete.
2) ZEILE 68: Einstellen der Form der Modellausgabe.
Dieselbe Logik wie oben.
Die anderen Abweichungen, die ich vorgenommen habe, wirken sich nicht auf das Modell aus, z. B. habe ich die Zeit mit einer Logik verfolgt, die ich intuitiver fand als die im Lernprogramm implementierte Logik. Ich brauchte die Eingaben nicht zu normalisieren, da es sich um ein baumbasiertes Modell handelt.
Wenn Sie andere Fehler finden, die ich gemacht habe, wäre ich Ihnen dankbar für Ihren Hinweis.
Vielen Dank für die Mitteilung Sitan, ich habe angewandt, was Sie darauf hingewiesen, aber der Fehler ist immer noch da
Ein Stapel input_count Eingaben.
Eingabe auf double setzen
Fehlermeldung.
Es scheint, dass MQL5 noch nicht (bzw. ONNXMLTools noch nicht) EBM's ONNX unterstützt:
https://www.mql5.com/de/docs/onnx/onnx_conversion
Wenn Sie die ONNX-Anhänge (insbesondere model.eurusd.D1.10.class.onnx, das 4 Eingänge verwendet) von https://www.mql5.com/de/articles/12484 heranziehen und Netron(Web-Version) verwenden, um die onnx-Dateien zu visualisieren, werden Sie die Unterschiede sehen.
Ich denke, dass die folgenden zwei Artikel Ihnen helfen werden, die Zusammenhänge besser zu verstehen:
Regressionsmodelle der Scikit-learn Bibliothek und ihr Export nach ONNX
Klassifikationsmodelle der Scikit-Learn Bibliothek und ihr Export nach ONNX
Hallo zusammen,
Wir versuchen, ein neuronales Netzwerk von Keras mit 11 Prädiktoren zu einem Zeitpunkt (Stapelgröße 32) zu verwenden, um Vorhersagen auf dem XauUsd zu machen (wobei die Ausgabe eine einzelne Zahl zwischen 0 und 1 ist). Zunächst laden wir in von OnnxCreatefrombuffer (weil OnnxCreate selbst nicht für uns arbeiten), dann erhalten wir immer einen Fehler auf der OnnxRun Bühne, wo ich beide Fehler unten angehängt haben. Jede Hilfe, welche Dimension für die Eingabe umzuformen ist, welches Format unser Prädiktorvektor haben sollte (wenn es überhaupt ein Vektor sein sollte?), oder einfach jede Hilfe oder Vorschläge mit Syntax, um diese Fehler zu beheben, wäre fantastisch. Wir haben versucht, um alle Arten von Kombinationen von 32, 1, 11 Vektoren und kein Glück und wirklich keine Idee mit den nächsten Schritten umzuformen. Vielen Dank für jeden, der helfen kann! Ben.
' Fehler 5808'
ONNX: Eingabeparameter #0 Tensor hat falsche Dimension [0], versuche OnnxSetInputShape zu verwenden'
ONNX: Ungültige Größe des Eingabeparameters #0, erwartet wurden 1408 Bytes statt 480'
Hallo, ich versuche, das
OnnxModelInfo.mq5Datei-Skript zu verwenden, aber ich kann es nicht zum Laufen bringen, was mache ich falsch? das kann nicht so kompliziert sein!
Ich habe das OnnxModelInfo-Skript kopiert und in den Ordner Files gespeichert.
Ich habe ein Onnx-Modell (angehängt)
und wenn ich das Skript kompiliere, erscheinen 21 Fehler.
Kann mir jemand bei diesem Problem helfen? Bitte
Der neue Artikel ONNX-Modelle in MQL5 verwenden wurde veröffentlicht:
Autor: MetaQuotes
Hallo meine Herren.
Kann mir jemand helfen, weil am Ende des Prozesses in Python folgender Fehler auftaucht: AttributeError: 'Sequential' object has no attribute 'output_names'. Ich weiß nicht viel über Python oder Programmierung. Daher wäre ich für jede Hilfe dankbar! Ich danke Ihnen.
Hallo Alberto, bitte posten Sie den Teil Ihres Codes[mit Hilfe derCODE-Taste (Alt -S)], in dem der Fehler auftritt, damit jemand, der sich mit Python auskennt(MetaTrader for Python | ONNX Models), die Lösung aufzeigen kann...