- ONNX Unterstützung
- Format-Konvertierung
- Automatische Konvertierung von Datentypen
- Erstellen eines Modells
- Ausführung eines Modells
- Ausführen im Strategy Tester
- OnnxCreate
- OnnxCreateFromBuffer
- OnnxRelease
- OnnxRun
- OnnxGetInputCount
- OnnxGetOutputCount
- OnnxGetInputName
- OnnxGetOutputName
- OnnxGetInputTypeInfo
- OnnxGetOutputTypeInfo
- OnnxSetInputShape
- OnnxSetOutputShape
- Datenstrukturen
Automatische Konvertierung von Eingangs- und Ausgangswerten bei der Ausführung von ONNX-Modellen
Die aktuelle ONNX-Version in MQL5 unterstützt nur Tensoren für Eingangs/Ausgangs-Werte. Tensoren sind Datenarrays mit den Elementen der folgenden Datentypen:
ONNX-Typ |
Entspricht dem MQL5-Typ |
---|---|
ONNX_DATA_TYPE_BOOL |
|
ONNX_DATA_TYPE_FLOAT |
|
ONNX_DATA_TYPE_UINT8 |
|
ONNX_DATA_TYPE_INT8 |
|
ONNX_DATA_TYPE_UINT16 |
|
ONNX_DATA_TYPE_INT16 |
|
ONNX_DATA_TYPE_INT32 |
|
ONNX_DATA_TYPE_INT64 |
|
ONNX_DATA_TYPE_FLOAT16 |
— |
ONNX_DATA_TYPE_DOUBLE |
|
ONNX_DATA_TYPE_UINT32 |
|
ONNX_DATA_TYPE_UINT64 |
|
ONNX_DATA_TYPE_COMPLEX64 |
— |
ONNX_DATA_TYPE_COMPLEX128 |
|
ONNX_DATA_TYPE_BFLOAT16 |
— |
ONNX_DATA_TYPE_STRING |
— |
Nur Arrays, Vektoren und Matrizen (wir bezeichnen sie als Daten) können in ONNX-Modellen als Eingangs-/Ausgangswerte eingegeben werden.
Wenn die Parametertypen nicht mit dem Parametertyp des ONNX-Modells übereinstimmen und OnnxRun ohne das Flag ONNX_NO_CONVERSION aufgerufen wird, wird eine automatische Datenkonvertierung durchgeführt. Automatische Konvertierung bedeutet, dass vor der Ausführung eines ONNX-Modells die Nutzerdaten in ONNX-Tensoren mit der entsprechenden Konvertierung kopiert werden.
Wenn ein ONNX-Modell ohne die Autokonvertierung ausgeführt wird, wird das Modell mit den Daten ohne zusätzliches Kopieren berechnet.
WICHTIG! Die Autokonvertierung kontrolliert keinen Überlauf (Kürzen), daher sollten Sie die Daten und die Datentypen, die in das ONNX-Modell eingegeben werden, sorgfältig überwachen.
Autokonvertierung unterstützt die folgenden ONNX-Typen:
- ONNX_DATA_TYPE_BOOL
- ONNX_DATA_TYPE_FLOAT
- ONNX_DATA_TYPE_UINT8
- ONNX_DATA_TYPE_INT8
- ONNX_DATA_TYPE_UINT16
- ONNX_DATA_TYPE_INT16
- ONNX_DATA_TYPE_INT32
- ONNX_DATA_TYPE_INT64
- ONNX_DATA_TYPE_FLOAT16
- ONNX_DATA_TYPE_DOUBLE
- ONNX_DATA_TYPE_UINT32
- ONNX_DATA_TYPE_UINT64
- ONNX_DATA_TYPE_COMPLEX64
- ONNX_DATA_TYPE_COMPLEX128
Nichtunterstütze Typen
- ONNX_DATA_TYPE_BFLOAT16
- ONNX_DATA_TYPE_STRING
Autokonvertierungsregeln der Tensortypen
Wenn der MQL5-Typ nicht in der Liste der vom Modell unterstützten Typen enthalten ist, gibt die Ausführung des ONNX-Modells den Fehler ERR_ONNX_NOT_SUPPORTED zurück (Fehlercode 5802).
Hinweis: Bei der Autokonvertierung wird der Typ color als uint verarbeitet, während datetime als long verarbeitet wird.
Autokonvertierung von Eingangswerten
ONNX-Typ (Tensorelementtyp) |
Von der Autokonvertierung unterstützter MQL5-Typ |
---|---|
ONNX_DATA_TYPE_BOOL |
bool, char, uchar, short, ushort, int, color, uint, datetime, long, folat, double, complex
Bei der Konvertierung werden Daten-Elemente durch einen einfachen Vergleich mit 0 überprüft |
ONNX_DATA_TYPE_FLOAT16 |
float, double |
ONNX_DATA_TYPE_FLOAT |
char, uchar, short, ushort, int, color, uint, datetime, long, ulong, float, double |
ONNX_DATA_TYPE_UINT8 |
Siehe ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT8 |
Siehe ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT16 |
Siehe ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT16 |
Siehe ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT32 |
Siehe ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT64 |
Siehe ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_DOUBLE |
Siehe ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT32 |
Siehe ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT64 |
Siehe ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_COMPLEX64 |
complex |
ONNX_DATA_TYPE_COMPLEX128 |
complex |
Autokonvertierung von Ausgangswerten
ONNX-Typ (Tensorelementtyp) |
Von der Autokonvertierung unterstützter MQL5-Typ |
---|---|
ONNX_DATA_TYPE_BOOL |
bool, char, uchar, short, ushort, int, color, uint, datetime, long, folat, double, complex
Wenn das Tensorelement Null ist, wird das Datenelement auf 0 gesetzt, andernfalls ist der Wert 1 |
ONNX_DATA_TYPE_FLOAT16 |
float, double |
ONNX_DATA_TYPE_FLOAT |
char, uchar, short, ushort, int, color, uint, datetime, long, ulong, float, double |
ONNX_DATA_TYPE_UINT8 |
Siehe ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT8 |
Siehe ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT16 |
Siehe ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT16 |
Siehe ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT32 |
Siehe ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT64 |
Siehe ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_DOUBLE |
Siehe ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT32 |
Siehe ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT64 |
Siehe ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_COMPLEX64 |
complex |
ONNX_DATA_TYPE_COMPLEX128 |
complex |
Siehe auch