OnnxCreate関数の働き・役割
OnnxCreate関数は、ONNX(Open Neural Network Exchange)モデルを使用する際に、ONNX形式のファイルからニューラルネットワークモデルを読み込み、そのモデルを操作するためのセッションを作成します。
この関数により、指定されたファイルパスにあるONNXモデルが読み込まれ、成功するとモデルを管理するためのセッションハンドルが返されます。OnnxCreate関数を用いて、さらに推論やモデル操作を行うことが可能です。
OnnxCreate関数の引数について
long OnnxCreate(
string filename, // ファイルパス
uint flags // モデル作成フラグ
);
OnnxCreate関数は、2つの引数を取ります。
第1引数:filename
- 種類: 文字列型(string型)
- 説明: 読み込むONNXモデルのファイルパスを指定します。このパスは、MQL5のFilesフォルダを基準とした相対パスで指定します。たとえば、MQL5/Filesフォルダにmodel.onnxというファイルがある場合、この引数には”model.onnx”と指定します。
また、指定されたファイル名に拡張子が含まれていない場合でも、システムが自動的に.onnxを補完してファイルを検索します。
第2引数:flags
- 種類: 符号なし整数型(uint型)
- 説明: モデル作成時の動作モードを指定するフラグです。ENUM_ONNX_FLAGSという列挙型から選択します。このフラグにより、モデルの作成方法を制御します。使用可能なフラグは以下の通りです。
- ONNX_COMMON_FOLDER: ONNXファイルが共通フォルダにある場合に使用します。
- ONNX_DEBUG_LOGS: モデル作成時のデバッグログを出力します。
これらのフラグを組み合わせることも可能で、ビット単位の論理和演算で複数のフラグを同時に指定できます。
OnnxCreate関数の戻り値について
OnnxCreate関数は、モデルを読み込んで作成されたセッションのハンドル(識別子)を戻り値として返します。このハンドルを使用して、後続の処理でモデルを操作したり、推論を実行したりします。
ハンドルが正常に作成された場合、そのセッションに対応する一意(1つしか存在しない)の識別子が返されます。このハンドルは、他のモデル操作関数に渡すことで使用します。
一方、エラーが発生した場合は、特殊な値であるINVALID_HANDLEが返されます。INVALID_HANDLEが返された場合、エラーの詳細を知るためには、GetLastError関数を呼び出してエラーコードを確認します。
OnnxCreate関数を使う際の注意点
OnnxCreate関数を使用する際には、いくつかのポイントに注意が必要です。
指定したファイルが存在しない場合、システムはファイル名に「.onnx」の拡張子を自動的に追加して検索を行います。しかし、ファイル名やパスの指定に誤りがあると、エラーが発生してINVALID_HANDLEが返されます。そのため、ファイルパスの入力ミスには十分に注意が必要です。
関数の戻り値がINVALID_HANDLEであった場合は、エラーが発生しているため、すぐにGetLastError関数を使ってエラーコードを確認し、原因を特定する必要があります。エラーが発生した場合には、モデルが正しく読み込まれないため、後続の処理は実行できません。
モデル作成時のフラグにはデバッグ用のオプション(ONNX_DEBUG_LOGS)があります。デバッグを行いたい場合には、このフラグを使用して詳細なログを取得することができますが、通常の運用では不要なログ出力を避けるため、フラグの使用は必要に応じて行ってください。