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

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

 

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

Conversión de tipos