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

Bool

ONNX_DATA_TYPE_FLOAT

float

ONNX_DATA_TYPE_UINT8

uchar

ONNX_DATA_TYPE_INT8

char

ONNX_DATA_TYPE_UINT16

ushort

ONNX_DATA_TYPE_INT16

short

ONNX_DATA_TYPE_INT32

int

ONNX_DATA_TYPE_INT64

long

ONNX_DATA_TYPE_FLOAT16

ONNX_DATA_TYPE_DOUBLE

double

ONNX_DATA_TYPE_UINT32

uint

ONNX_DATA_TYPE_UINT64

ulong

ONNX_DATA_TYPE_COMPLEX64

ONNX_DATA_TYPE_COMPLEX128

complex

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

Type Casting