- Поддержка ONNX
- Преобразование форматов
- Автоконвертация данных
- Cоздание модели
- Запуск модели
- Проверка в тестере
- OnnxCreate
- OnnxCreateFromBuffer
- OnnxRelease
- OnnxRun
- OnnxGetInputCount
- OnnxGetOutputCount
- OnnxGetInputName
- OnnxGetOutputName
- OnnxGetInputTypeInfo
- OnnxGetOutputTypeInfo
- OnnxSetInputShape
- OnnxSetOutputShape
- Структуры данных
Автоконвертация input и output значений при запуске ONNX моделей
В текущей версии ONNX в языке MQL5 в качестве input/output значений поддерживаются только тензоры — массивы данных с одним из следующих типов для элементов:
Тип 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 |
— |
В качестве input/output значений в ONNX модели можно передавать только массивы, вектора или матрицы (далее Данные).
Если тип переданного параметра не соответствует типу параметру ONNX модели и при вызове OnnxRun не указан флаг ONNX_NO_CONVERSION, будет использована автоконвертация. Автоконвертация означает, что перед выполнением ONNX модели пользовательские Данные будут скопированы в ONNX-тензоры c конвертацией.
При запуске ONNX модели без автоконвертации ONNX модель расчитывается на Данных без какого либо дополнительного копирования.
ВАЖНО! Автоконвертация не контролирует переполнение (truncate), поэтому следует внимательно следить за данными и их типами, которые передаются в 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.
Автоконвертация input значений
Тип ONNX (тип элемента тензора) |
Тип MQL5, поддерживаемый автоконвертацией |
---|---|
ONNX_DATA_TYPE_BOOL |
bool, char, uchar, short, ushort, int, color, uint, datetime, long, folat, double, complex
При конвертации элементы Данных проверяются простым сравнением на ноль |
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 |
complex |
ONNX_DATA_TYPE_COMPLEX128 |
complex |
Автоконвертация output значений
Тип ONNX (тип элемента тензора) |
Тип MQL5, поддерживаемый автоконвертацией |
---|---|
ONNX_DATA_TYPE_BOOL |
bool, char, uchar, short, ushort, int, color, uint, datetime, long, folat, double, complex
Если элемент тензора ноль, то элементу Данных выставляется значение 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 |
complex |
ONNX_DATA_TYPE_COMPLEX128 |
complex |
Смотри также