- Soporte de ONNX
- Conversión de formatos
- Autoconversión de los datos
- Creación de un modelo
- Inicio del modelo
- Comprobación en el simulador
- OnnxCreate
- OnnxCreateFromBuffer
- OnnxRelease
- OnnxRun
- OnnxGetInputCount
- OnnxGetOutputCount
- OnnxGetInputName
- OnnxGetOutputName
- OnnxGetInputTypeInfo
- OnnxGetOutputTypeInfo
- OnnxSetInputShape
- OnnxSetOutputShape
- Estructura de los datos
Autoconversión de los valores input y output al iniciar los modelos ONNX
En la actual versión de ONNX en el lenguaje MQL5, como valores input/output se soportan solo tensores, los arrays de datos con uno de los siguientes tipos para los elementos:
Tipo ONNX |
Se corresponde con el 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 |
|
Como valores input/output en los modelos ONNX se pueden transmitir solo arrays, vectores o matrices (en lo sucesivo Datos).
Si el tipo del parámetro transmitido no coincide con el tipo del parámetro del modelo ONNX y al llamar a OnnxRun no se especifica la bandera ONNX_NO_CONVERSION, se utilizará la autoconversión. La autoconversión implica que antes de ejecutar el modelo ONNX, los Datos de usuario se copiarán a tensores ONNX con conversión.
Al ejecutar el modelo ONNX sin autoconversión, el modelo ONNX se calculará con los Datos sin ningún copiado adicional.
¡IMPORTANTE! La autoconversión no controla el desbordamiento (truncate), por lo que deberá monitorear cuidadosamente tanto los datos como sus tipos transmitidos al modelo ONNX.
La autoconversión admite los siguientes tipos de 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
Datos no soportados:
- ONNX_DATA_TYPE_BFLOAT16
- ONNX_DATA_TYPE_STRING
Reglas de conversión automática por tipos de tensor
Si el tipo MQL5 no está incluido en la lista de tipos soportados por el modelo, la ejecución del modelo ONNX finalizará con el error ERR_ONNX_NOT_SUPPORTED (código de error 5802).
Nota: al realizar la autoconversión, el tipo color se trata como uint, mientras que el tipo datetime se trata como long.
Autoconversión de valores input
Tipo ONNX (tipo de elemento del tensor) |
Tipo MQL5 compatible con la autoconversión |
---|---|
ONNX_DATA_TYPE_BOOL |
bool, char, uchar, short, ushort, int, color, uint, datetime, long, folat, double, complex
Al realizar la conversión, los elementos de los Datos se comprueban mediante una comparación simple con cero |
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 |
ver ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT8 |
ver ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT16 |
ver ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT16 |
ver ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT32 |
ver ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT64 |
ver ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_DOUBLE |
ver ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT32 |
ver ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT64 |
ver ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_COMPLEX64 |
complex |
ONNX_DATA_TYPE_COMPLEX128 |
complex |
Autoconversión de valores output
Tipo ONNX (tipo de elemento del tensor) |
Tipo MQL5 compatible con la autoconversión |
---|---|
ONNX_DATA_TYPE_BOOL |
bool, char, uchar, short, ushort, int, color, uint, datetime, long, folat, double, complex
Si el elemento del tensor es cero, para el elemento de los Datos se establecerá el valor 0, de lo contrario, 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 |
ver ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT8 |
ver ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT16 |
ver ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT16 |
ver ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT32 |
ver ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT64 |
ver ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_DOUBLE |
ver ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT32 |
ver ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT64 |
ver ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_COMPLEX64 |
complex |
ONNX_DATA_TYPE_COMPLEX128 |
complex |
Ver también