- Suporte a ONNX
- Conversão de formatos
- Autoconversão de dados
- Criação de modelo
- Inicialização do modelo
- Verificação no testador
- OnnxCreate
- OnnxCreateFromBuffer
- OnnxRelease
- OnnxRun
- OnnxGetInputCount
- OnnxGetOutputCount
- OnnxGetInputName
- OnnxGetOutputName
- OnnxGetInputTypeInfo
- OnnxGetOutputTypeInfo
- OnnxSetInputShape
- OnnxSetOutputShape
- Estruturas de dados
Autoconversão de valores de entrada e saída ao executar modelos ONNX
Na versão atual do ONNX em MQL5 como valores do tipo input/output são suportados apenas tensores, que são matrizes de dados com um dos seguintes tipos de elementos:
Tipo ONNX |
Em conformidade com o 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 do tipo input/output no modelo ONNX só é possível transferir matrizes, vetores ou matrizes (Dados).
Se o tipo de parâmetro passado não corresponder ao tipo de parâmetro do modelo ONNX e se o sinalizador OnnxRun não for especificado ao chamar ONNX_NO_CONVERSION, será usada a autoconversão. A autoconversão implica que, antes de executar o modelo ONNX, os dados do usuário Dadosserão copiados para os sensores ONNX com conversão.
Ao executar um modelo ONNX sem autoconversão, o modelo ONNX é calculado em Dados sem nenhuma cópia adicional.
ADVERTÊNCIA!A autoconversão não controla o truncamento, portanto, deve-se tomar cuidado com os dados e tipos de dados que são passados para o modelo ONNX.
A autoconversão é compatível com os seguintes 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
Tipos não suportados:
- ONNX_DATA_TYPE_BFLOAT16
- ONNX_DATA_TYPE_STRING
Regras de autoconversão por tipos de tensor
Se o tipo MQL5 não estiver entre os tipos suportados pelo modelo, o modelo ONNX será encerrado com o erro ERR_ONNX_NOT_SUPPORTED (código de erro 5802).
Nota: durante a autoconversão, o tipo color é processado como uint e o tipo datetime é processado como long.
Autoconversão de valores input
Tipo ONNX (tipo de elemento tensor) |
Tipo MQL5, suportado pela autoconversão |
---|---|
ONNX_DATA_TYPE_BOOL |
bool, char, uchar, short, ushort, int, color, uint, datetime, long, folat, double, complex
Ao converter elementos de Dados é verificado por uma comparação simples de zero a zero. |
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 |
Veja. ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT8 |
Veja. ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT16 |
Veja. ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT16 |
Veja. ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT32 |
Veja. ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT64 |
Veja. ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_DOUBLE |
Veja. ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT32 |
Veja. ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT64 |
Veja. ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_COMPLEX64 |
complex |
ONNX_DATA_TYPE_COMPLEX128 |
complex |
Autoconversão de valores output
Tipo ONNX (tipo de elemento tensor) |
Tipo MQL5, suportado pela autoconversão |
---|---|
ONNX_DATA_TYPE_BOOL |
bool, char, uchar, short, ushort, int, color, uint, datetime, long, folat, double, complex
Se um elemento do tensor for zero, o elemento Dados será definido como 0; caso contrário, será definido como 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 |
Veja. ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT8 |
Veja. ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT16 |
Veja. ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT16 |
Veja. ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT32 |
Veja. ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT64 |
Veja. ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_DOUBLE |
Veja. ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT32 |
Veja. ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT64 |
Veja. ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_COMPLEX64 |
complex |
ONNX_DATA_TYPE_COMPLEX128 |
complex |
Veja também