Main Content

exportONNXNetwork

ONNX モデル形式へのネットワークのエクスポート

説明

exportONNXNetwork(net,filename) は、ONNX™ 形式のファイル filename に重みを使用して深層学習ネットワーク net をエクスポートします。filename が存在する場合、exportONNXNetwork はファイルを上書きします。

この関数には、Deep Learning Toolbox™ Converter for ONNX Model Format サポート パッケージが必要です。このサポート パッケージがインストールされていない場合、関数によってダウンロード用リンクが表示されます。

exportONNXNetwork(net,filename,Name=Value) は、1 つ以上の名前と値の引数で指定された追加オプションを使用してネットワークをエクスポートします。たとえば、ONNX ネットワークの名前とバッチ サイズを指定できます。

すべて折りたたむ

事前学習済みの SqueezeNet 畳み込みニューラル ネットワークを読み込みます。

net = imagePretrainedNetwork("squeezenet")
net = 
  dlnetwork with properties:

         Layers: [68×1 nnet.cnn.layer.Layer]
    Connections: [75×2 table]
     Learnables: [52×3 table]
          State: [0×3 table]
     InputNames: {'data'}
    OutputNames: {'prob_flatten'}
    Initialized: 1

  View summary with summary.

net は、他のプロパティと共にネットワークの層と学習可能なパラメーターが格納された dlnetwork オブジェクトです。

ネットワークを解析します。

analyzeNetwork(net)

exportONNXNetwork_analyeNetwork.png

analyzeNetwork は、ネットワーク アーキテクチャの対話型プロット、およびネットワーク層についての情報が含まれる table を表示します。ONNX 形式にエクスポートする前に、ネットワーク net でエラーや問題を検出することもできます。net はエラー フリーです。

ネットワーク netsqueezenet.onnx という名前の ONNX 形式のファイルとしてエクスポートします。ファイルを現在のフォルダーに保存します。Deep Learning Toolbox Converter for ONNX Model Format サポート パッケージがインストールされていない場合、必要なサポート パッケージへのリンクが exportONNXNetwork によってアドオン エクスプローラーに表示されます。サポート パッケージをインストールするには、リンクをクリックして、[インストール] をクリックします。

filename = "squeezenet.onnx";
exportONNXNetwork(net,filename)

これで、ONNX インポートをサポートする深層学習フレームワークに squeezenet.onnx ファイルをインポートできます。

入力引数

すべて折りたたむ

学習済みのネットワークまたはネットワーク層のグラフ。dlnetwork オブジェクトとして指定します。

学習済みのネットワークを次の方法で取得できます。

  • 関数 imagePretrainedNetwork を使用して事前学習済みのネットワークをインポートする

  • 関数 trainnet またはカスタム学習ループを使用して dlnetwork オブジェクトに学習させる

exportONNXNetwork を使用するには、net をエラー フリーにする必要があります。ONNX ネットワークにエクスポートする前に、analyzeNetwork を使用して学習済みネットワークのエラーや問題を検出できます。

ファイルの名前。文字ベクトルまたは string スカラーとして指定します。

例: "network.onnx"

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

例: exportONNXNetwork(net,filename,NetworkName="my_net") はネットワークをエクスポートし、保存した ONNX ネットワークのネットワーク名として "my_net" を指定します。

保存したファイルに格納する ONNX ネットワークの名前。文字ベクトルまたは string スカラーとして指定します。

例: NetworkName="my_squeezenet"

エクスポートしたモデルで使用する ONNX 演算子セットのバージョン。[6 13] の範囲の正の整数として指定します。既定の演算子セットでエクスポートしようとするネットワークがサポートされていない場合、新しいバージョンを使用してみてください。エクスポートされたネットワークを別のフレームワークにインポートし、エクスポート時にインポーターによってサポートされない演算子セットを使用した場合、インポートが失敗する可能性があります。

適切な演算子セットのバージョンを使用していることを確認するには、ONNX 演算子のドキュメント[3]を参照してください。たとえば、OpsetVersion=9 は、maxUnpooling2dLayerMaxUnpool-9 ONNX 演算子にエクスポートします。

例: OpsetVersion=6

ONNX ネットワークのバッチ サイズ。[] または正の整数として指定します。BatchSize[] として指定すると、ONNX ネットワークのバッチ サイズは動的になります。BatchSize を正の整数 k として指定すると、ONNX ネットワークのバッチ サイズは k に固定されます。

例: BatchSize=10

制限

  • exportONNXNetwork は次の ONNX をサポートします。

    • ONNX 中間表現 version 7

    • ONNX 演算子セット 6 ~ 14

  • exportONNXNetwork は、学習オプション、学習率係数、正則化係数など、ネットワーク学習に関連する設定またはプロパティをエクスポートしません。

  • ONNX 形式がサポートしない層 (ONNX のエクスポートでサポートされている層を参照) を含むネットワークをエクスポートする場合、exportONNXNetwork は、サポートされない層の代わりにプレースホルダー ONNX 演算子を保存し、警告を返します。プレースホルダー演算子が使用された ONNX ネットワークを他の深層学習フレームワークにインポートすることはできません。

  • MATLAB® と ONNX はアーキテクチャが異なるため、エクスポートされたネットワークと元のネットワークは構造が異なる場合があります。

メモ

エクスポートしたネットワークをインポートする場合、元のネットワークの層とは異なるネットワークの層が再インポートされ、サポート対象外となる可能性があります。

詳細

すべて折りたたむ

ONNX のエクスポートでサポートされている層

exportONNXNetwork は以下をエクスポートできます。

ヒント

  • 多入力多出力の学習済み MATLAB 深層学習ネットワークを、ONNX モデル形式にエクスポートできます。多入力多出力の深層学習ネットワークの詳細については、多入力および多出力ネットワークを参照してください。

参照

[1] Open Neural Network Exchange. https://github.com/onnx/.

[2] ONNX. https://onnx.ai/.

バージョン履歴

R2018a で導入