ONNXモデルの実行時に入力値と出力値を自動変換します

MQL5の現在のONNXバージョンは、入出力値のテンソルのみをサポートしています。テンソルは、次のデータ型の要素を含むデータ配列です。

ONNX型

対応するMQL5型

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  

 

配列、ベクトル、行列(これらをデータと呼びます)のみをONNXモデルに入出力値として供給できます。

パラメータ型がONNXモデルのパラメータ型と一致せず、OnnxRunONNX_NO_CONVERSIONフラグなしで呼び出された場合を指定すると、自動データ変換が適用されます。自動変換は、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との単純な比較によって確認されます

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

 

出力値の自動変換

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

 

参照

型キャスト