OnnxGetInputTypeInfo関数の働き・役割
OnnxGetInputTypeInfo関数は、ONNX(Open Neural Network Exchange)モデルにおいて、指定されたインデックスに対応する入力パラメータの型情報を取得するための関数です。ONNXモデルの入力にはそれぞれ特定のデータ型が割り当てられており、この関数を使用することで、その型に関する詳細な情報を取得できます。取得された型情報は、モデルに入力するデータの形式を確認する際に役立ちます。
OnnxGetInputTypeInfo関数の引数について
bool OnnxGetInputTypeInfo(
long onnx_handle, // ONNXセッションハンドル
long index, // パラメータインデックス
OnnxTypeInfo& typeinfo // パラメータ型の記述
);
OnnxGetInputTypeInfo関数は、次の形式で定義されています。
第1引数: onnx_handle
種類: long
説明: ONNXセッションオブジェクトを表すハンドルです。このハンドルはOnnxCreate関数またはOnnxCreateFromBuffer関数で作成されます。このハンドルを使って、モデルの入力パラメータの型情報にアクセスします。
第2引数: index
種類: long
説明: 0から始まる入力パラメータのインデックスです。取得したい入力パラメータのインデックスを指定します。インデックスが範囲外の場合、エラーが発生する可能性があります。
第3引数: typeinfo
種類: OnnxTypeInfo構造体
説明: 出力として入力パラメータの型情報が格納されるOnnxTypeInfo構造体です。この構造体には、パラメータのデータ型や形状に関する情報が含まれます。
OnnxTypeInfo構造体について
OnnxTypeInfo構造体は、ONNXモデルの入力または出力パラメータの型を記述するために使用されます。この構造体は、入力や出力がどのようなデータ型を持っているかを表し、モデルに適切な形式のデータを渡すために重要な情報を提供します。OnnxTypeInfo構造体には、テンソル、マップ、シーケンスの3つの型が定義されており、実際に使用されるのはそのうち1つだけです。
ONNXモデルの入力としては、テンソル型(ONNX_TYPE_TENSOR)のみが使用でき、その場合はOnnxTypeInfo構造体のtensorフィールドに情報が格納されます。一方、他のフィールド(mapやsequence)は定義されず、値は格納されません。
OnnxTypeInfo構造体の各メンバの解説
type メンバ
typeメンバは、入力または出力パラメータの型を示すENUM_ONNX_TYPE型のフィールドです。このフィールドには、テンソル(ONNX_TYPE_TENSOR)、マップ(ONNX_TYPE_MAP)、シーケンス(ONNX_TYPE_SEQUENCE)のいずれかが格納されます。
- ONNX_TYPE_TENSOR: テンソル型を表します。ONNXモデルの入力はこの型のみ対応しています。
- ONNX_TYPE_MAP: マップ型を表します。
- ONNX_TYPE_SEQUENCE: シーケンス型を表します。
tensor メンバ
tensorメンバは、テンソル型のパラメータに関する情報を記述するOnnxTensorTypeInfo構造体です。このフィールドには、入力パラメータがテンソルである場合、その型と形状が格納されます。テンソルは、ONNXモデルのデータの多次元配列を表すもので、通常は数値データが扱われます。
map メンバ
mapメンバは、マップ型のパラメータに関する情報を記述するOnnxMapTypeInfo構造体です。ONNXモデルの入力としてマップ型は使用できませんが、出力としてはマップ型が存在する可能性があります。
sequence メンバ
sequenceメンバは、シーケンス型のパラメータに関する情報を記述するOnnxSequenceTypeInfo構造体です。ONNXモデルの入力としてシーケンス型は使用できませんが、出力としてはシーケンス型が存在する可能性があります。
OnnxGetInputTypeInfo関数の戻り値について
OnnxGetInputTypeInfo関数の戻り値は、関数が成功したかどうかを示す真偽値です。
- 成功した場合は true が返され、指定されたインデックスに対応する入力パラメータの型情報がOnnxTypeInfo構造体に格納されます。
- 失敗した場合は false が返され、型情報の取得に失敗したことを意味します。この場合、詳細なエラー情報は GetLastError関数を使用して確認できます。
たとえば、無効なONNXセッションハンドルが渡された場合や、インデックスが範囲外である場合などのケースに、失敗する可能性があります。