- ONNX支持
- 格式转换
- 自动数据类型转换
- 创建模型
- 运行模型
- 运行策略测试
- OnnxCreate
- OnnxCreateFromBuffer
- OnnxRelease
- OnnxRun
- OnnxGetInputCount
- OnnxGetOutputCount
- OnnxGetInputName
- OnnxGetOutputName
- OnnxGetInputTypeInfo
- OnnxGetOutputTypeInfo
- OnnxSetInputShape
- OnnxSetOutputShape
- 数据结构
运行ONNX模型时自动转换输入和输出值
MQL5中当前ONNX版本仅支持输入/输出值的张量。张量是包含以下数据类型元素的数据数组:
ONNX类型 |
对应于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 |
― |
只有数组、向量和矩阵(我们将它们称为数据)可作为输入/输出值进入ONNX模型。
如果参数类型与ONNX模型的参数类型不匹配,并且在没有指定ONNX_NO_CONVERSION标识的情况下调用OnnxRun,将应用自动数据转换。自动转换意味着在运行ONNX模型之前,用户数据将通过相关转换被复制到ONNX张量中。
当ONNX模型在没有自动转换的情况下运行时,将使用数据计算模型,而无需任何额外的复制。
重要!自动转换不控制过载(截断),因此您应该仔细监控输入到ONNX模型中的数据和数据类型。
自动转换支持以下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
不支持的类型:
- ONNX_DATA_TYPE_BFLOAT16
- ONNX_DATA_TYPE_STRING
张量类型的自动转换规则
如果MQL5类型未包含在模型支持的类型列表中,运行ONNX模型将返回ERR_ONNX_NOT_SUPPORTED错误(错误代码5802)。
注意:自动转换时,color类型被处理为uint,而datetime被处理为long。
输入值的自动转换
ONNX类型(张量项目类型) |
自动转换支持的MQL5类型 |
---|---|
ONNX_DATA_TYPE_BOOL |
bool, char, uchar, short, ushort, int, color, uint, datetime, long, folat, double, complex
在转换过程中,通过与0的简单比较来检查Data元素 |
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 |
请见ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT8 |
请见ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT16 |
请见ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT16 |
请见ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT32 |
请见ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT64 |
请见ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_DOUBLE |
请见ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT32 |
请见ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT64 |
请见ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_COMPLEX64 |
复杂型 |
ONNX_DATA_TYPE_COMPLEX128 |
复杂型 |
输出值的自动转换
ONNX类型(张量项目类型) |
自动转换支持的MQL5类型 |
---|---|
ONNX_DATA_TYPE_BOOL |
bool, char, uchar, short, ushort, int, color, uint, datetime, long, folat, double, complex
如果张量元素为零,则Data元素设为0;否则,该值为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 |
请见ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT8 |
请见ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT16 |
请见ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT16 |
请见ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT32 |
请见ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT64 |
请见ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_DOUBLE |
请见ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT32 |
请见ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT64 |
请见ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_COMPLEX64 |
复杂型 |
ONNX_DATA_TYPE_COMPLEX128 |
复杂型 |
另见