Main Content

事前学習済みの ONNX ネットワークをインポートする関数の選択

Deep Learning Toolbox™ Converter for ONNX™ Model Format には、事前学習済みの ONNX (Open Neural Network Exchange) ネットワークをインポートするための 3 つの関数 (importONNXNetworkimportONNXLayers、および importONNXFunction) が用意されています。

このフロー チャートは、各シナリオに最適なインポート関数を示しています。

Flow chart for selecting ONNX import function

メモ

既定では、ソフトウェアが ONNX 演算子をそれと等価な組み込みの MATLAB® 層に変換できないときに、importONNXNetwork および importONNXLayers がカスタム層の生成を試みます。ソフトウェアによる変換がサポートされている演算子の一覧については、組み込みの MATLAB 層への変換がサポートされている ONNX 演算子を参照してください。

importONNXNetwork および importONNXLayers は、生成されたカスタム層を現在のフォルダー内のパッケージ +PackageName に保存します。

importONNXNetwork および importONNXLayers は、組み込みの MATLAB 層への変換がサポートされていない各 ONNX 演算子のカスタム層を自動生成しません。

判定

この表は、ONNX のインポート関数を選択するワークフロー内の各判定について説明しています。

判定説明
すべての ONNX 演算子が、等価な組み込みの MATLAB 層への変換をサポートしているか、もしくは、ソフトウェアがカスタム層を自動生成できるか?
  • インポートしたネットワークに、組み込みの MATLAB 層への変換がサポートされていない ONNX 演算子が含まれており (組み込みの MATLAB 層への変換がサポートされている ONNX 演算子を参照)、importONNXNetwork がカスタム層を生成しない場合、importONNXNetwork はエラーを返します。

  • インポートしたネットワークに、組み込みの MATLAB 層への変換がサポートされていない ONNX 演算子が含まれており、importONNXLayers がカスタム層を生成しない場合、importONNXLayers はサポートされない層の代わりにプレースホルダー層を挿入します。

  • importONNXFunction は、ほとんどの ONNX 演算子をサポートしています。詳細については、ONNX Operators That importONNXFunction Supportsを参照してください。

インポートしたネットワークを展開するか?importONNXNetwork または importONNXLayers を使用する場合、インポートしたネットワークのコードを生成できます。コード生成用の DAGNetwork オブジェクトを作成するには、コード生成のための事前学習済みネットワークの読み込み (MATLAB Coder)を参照してください。
インポートしたネットワークをディープ ネットワーク デザイナーを使用して読み込むか?importONNXNetwork または importONNXLayers を使用する場合、インポートしたネットワークを ディープ ネットワーク デザイナー アプリを使用して読み込むことができます。
インポートしたネットワークに再学習させる場合にカスタム学習ループを使用するか?
  • importONNXFunction を使用する場合、インポートしたネットワークはカスタム学習ループでのみ再学習させることができます。例については、Train Imported ONNX Function Using Custom Training Loopを参照してください。

  • TargetNetwork"dlnetwork" として指定したうえで、importONNXNetwork を使用して、ネットワークを dlnetwork オブジェクトとしてインポートします。dlnetwork を使用すると、自動微分を使用するカスタム学習ループをサポートできます。

  • TargetNetwork"dlnetwork" として指定したうえで、importONNXLayers を使用して、ネットワークを dlnetwork オブジェクトと互換性がある LayerGraph オブジェクトとしてインポートします。その後、dlnetwork を使用して層グラフを dlnetwork に変換します。

  • 学習オプションの詳細については、MATLAB による深層学習モデルの学習を参照してください。

アクション

この表は、ONNX のインポート関数を選択するワークフロー内の各アクションについて説明しています。

アクション説明
importONNXNetwork を使用するimportONNXNetwork は、予測に使用する準備が整った DAGNetwork オブジェクトまたは dlnetwork オブジェクトを返します (詳細については、TargetNetwork の名前と値の引数を参照)。DAGNetwork オブジェクトの関数 classify を使用するか dlnetwork オブジェクトの関数 predict を使用して、クラス ラベルを予測します。
importONNXLayers を使用するimportONNXLayers は、DAGNetwork オブジェクトまたは dlnetwork オブジェクトと互換性がある LayerGraph オブジェクトを返します (詳細については、TargetNetwork の名前と値の引数を参照)。importONNXLayers はサポートされない層の代わりにプレースホルダー層を挿入します。プレースホルダー層を検索して置換します。その後、DAGNetwork オブジェクトを返す assembleNetwork を使用して層グラフを組み立てるか、dlnetwork を使用して層グラフを dlnetwork オブジェクトに変換できます。
importONNXFunction を使用するimportONNXFunction は、ネットワーク パラメーターを含む ONNXParameters オブジェクトと、ネットワーク アーキテクチャを含むモデル関数 (Imported ONNX Model Functionを参照) を返します。ONNXParameters オブジェクトおよびモデル関数は、予測に使用する準備が整っています。例については、Predict Using Imported ONNX Functionを参照してください。
プレースホルダー層を検索して置換するインポートしたネットワークに含まれるプレースホルダー層の名前とインデックスを検索するには、関数 findPlaceholderLayers を使用します。その後、プレースホルダー層を、ユーザーが定義した新しい層に置き換えることができます。層を置き換えるには、replaceLayer を使用します。

参考

| | | | | |

関連するトピック