ONNX 모델 실행 시 입력 및 출력 값 자동 변환

MQL5의 현재 ONNX 버전은 input/output<에 대한 텐서만 지원합니다. 값. 텐서는 다음과 같은 데이터 유형의 요소가 있는 데이터 배열입니다:

ONNX type

Corresponds to MQL5 type

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  

 

배열,벡터와 행렬만 (우리는 이것들을Data라고 부릅니다) 입력/출력 값으로 ONNX 모델에 공급될 수 있습니다.

매개변수 유형이 ONNX 모델의 매개변수 유형과 일치하지 않는 경우 OnnxRunONNX_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

 

더 참조할 만한 내용

타입 캐스팅