- ONNX 지원
- 포맷 변환
- 자동 데이터 유형 변환
- 모델 생성
- 모델 실행
- 전략 테스터에서 실행
- OnnxCreate
- OnnxCreateFromBuffer
- OnnxRelease
- OnnxRun
- OnnxGetInputCount
- OnnxGetOutputCount
- OnnxGetInputName
- OnnxGetOutputName
- OnnxGetInputTypeInfo
- OnnxGetOutputTypeInfo
- OnnxSetInputShape
- OnnxSetOutputShape
- 데이터 구조
ONNX 모델 실행 시 입력 및 출력 값 자동 변환
MQL5의 현재 ONNX 버전은 input/output<에 대한 텐서만 지원합니다. 값. 텐서는 다음과 같은 데이터 유형의 요소가 있는 데이터 배열입니다:
ONNX type |
Corresponds to MQL5 type |
---|---|
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 |
— |
배열,벡터와 행렬만 (우리는 이것들을Data라고 부릅니다) 입력/출력 값으로 ONNX 모델에 공급될 수 있습니다.
매개변수 유형이 ONNX 모델의 매개변수 유형과 일치하지 않는 경우 OnnxRun은 ONNX_NO_CONVERSION 플래그를 지정 없이 호출됩니다. 자동 데이터 변환이 적용됩니다. 자동 변환은 ONNX 모델을 실행하기 전에 사용자 Data와 관련 변환과 함께 ONNX 텐서에 복사됩니다.
ONNX 모델이 자동 변환 없이 실행되면 모델은 추가적인 복사 없이Data를 사용하여 계산됩니다.
중요! 자동 변환은 오버플로(자르기)를 제어하지 않으므로 데이터와 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
Tensor 유형별 자동 변환 규칙
만약MQL5 유형이 모델에서 지원하는 유형 목록에 포함되지 않은 경우에 ONNX 모델을 실행하면ERR_ONNX_NOT_SUPPORTED 오류(오류 코드 5802)이 반환됩니다.
참고: 자동 변환 중에는 색상 유형은 unit로 처리되지만 날짜 시간은 long으로 처리됩니다.
입력 값의 자동 변환
ONNX 유형(텐서 항목 유형) |
자동 변환이 지원되는 MQL5 유형 |
---|---|
ONNX_DATA_TYPE_BOOL |
bool, char, uchar, short, ushort, int, color, uint, datetime, long, folat, double, complex
변환하는 동안Data 요소는 0에 대해 비교하여 확인됩니다. |
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 |
See ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT8 |
See ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT16 |
See ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT16 |
See ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT32 |
See ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT64 |
See ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_DOUBLE |
See ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT32 |
See ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT64 |
See ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_COMPLEX64 |
complex |
ONNX_DATA_TYPE_COMPLEX128 |
complex |
출력 값의 자동 변환
ONNX 유형(텐서 항목 유형) |
자동 변환이 지원되는 MQL5 유형 |
---|---|
ONNX_DATA_TYPE_BOOL |
bool, char, uchar, short, ushort, int, color, uint, datetime, long, folat, double, complex
텐서 요소가 0이면 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 |
See ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT8 |
See ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT16 |
See ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT16 |
See ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT32 |
See ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_INT64 |
See ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_DOUBLE |
See ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT32 |
See ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_UINT64 |
See ONNX_DATA_TYPE_FLOAT |
ONNX_DATA_TYPE_COMPLEX64 |
complex |
ONNX_DATA_TYPE_COMPLEX128 |
complex |
더 참조할 만한 내용