- Supporto ONNX
- Conversione Di Formato
- Conversione automatica del tipo di dati
- Creazione di un Modello
- Esecuzione di un modello
- Eseguire nello Strategy Tester
- OnnxCreate
- OnnxCreateFromBuffer
- OnnxRelease
- OnnxRun
- OnnxGetInputCount
- OnnxGetOutputCount
- OnnxGetInputName
- OnnxGetOutputName
- OnnxGetInputTypeInfo
- OnnxGetOutputTypeInfo
- OnnxSetInputShape
- OnnxSetOutputShape
- Strutture dati
Conversione automatica dei valori d'ingresso e d'uscita durante l'esecuzione di modelli ONNX
L'attuale versione ONNX in MQL5 supporta solo tensori per valori ingresso/uscita. I tensori sono array di dati con gli elementi dei seguenti tipi di dati:
Tipo ONNX |
Corrisponde al tipo MQL5 |
---|---|
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 |
— |
Solo gli array, vettori e matrici (ci riferiremo a loro come Data) possono essere inseriti nei modelli ONNX come valori di ingresso/uscita.
Se i tipi di parametro non corrispondono al tipo di parametro del modello ONNX e viene chiamata OnnxRun senza il flag ONNX_NO_CONVERSION specificato, verrà applicata la conversione automatica dei dati. L'autoconversione implica che prima di eseguire un modello ONNX, l'operatore Data verrà copiato nei tensori ONNX con la relativa conversione.
Quando un modello ONNX viene eseguito senza autoconversione, il modello verrà calcolato utilizzando Data senza alcuna copia aggiuntiva.
IMPORTANTE! L'autoconversione non controlla l'overflow (troncare), pertanto è necessario monitorare attentamente i dati e i tipi di dati immessi nel modello ONNX.
L'autoconversione supporta i seguenti tipi ONNX:
- 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
Tipi non supportati:
- ONNX_DATA_TYPE_BFLOAT16
- ONNX_DATA_TYPE_STRING
Regole di Autoconversione per Tipi di Tensori
Se il tipo MQL5 non è incluso nella lista dei tipi supportati dal modello, l'esecuzione del modello ONNX restituirà l'errore ERR_ONNX_NOT_SUPPORTED (codice errore 5802).
Nota: Durante l'autoconversione, il tipo color viene processato come uint, mentre datetime viene processato come long.
Autoconversione dei valori in ingresso
Tipo ONNX (tipo elemento tensore) |
Tipo MQL5 supportato da autoconversione |
---|---|
ONNX_DATA_TYPE_BOOL |
bool, char, uchar, short, ushort, int, color, uint, datetime, long, folat, double, complex
Durante la conversione, gli elementi Data sono controllati da un semplice confronto con 0 |
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 |
Vedere ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT8 |
Vedere ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT16 |
Vedere ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT16 |
Vedere ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT32 |
Vedere ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT64 |
Vedere ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_DOUBLE |
Vedere ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT32 |
Vedere ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT64 |
Vedere ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_COMPLEX64 |
complex |
ONNX_DATA_TYPE_COMPLEX128 |
complex |
Autoconversione dei valori in uscita
Tipo ONNX (tipo elemento tensore) |
Tipo MQL5 supportato da autoconversione |
---|---|
ONNX_DATA_TYPE_BOOL |
bool, char, uchar, short, ushort, int, color, uint, datetime, long, folat, double, complex
Se l'elemento tensore è zero, l'elemento Data è impostato su 0; altrimenti il valore è 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 |
Vedere ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT8 |
Vedere ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT16 |
Vedere ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT16 |
Vedere ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT32 |
Vedere ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT64 |
Vedere ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_DOUBLE |
Vedere ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT32 |
Vedere ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT64 |
Vedere ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_COMPLEX64 |
complex |
ONNX_DATA_TYPE_COMPLEX128 |
complex |
Vedi anche