主要内容

importONNXLayers

ONNXネットワクからの層のンポト

説明

lgraph= importONNXLayers (modelfileは,ファmodelfileから事前学習済みのONNX™(打开)神经网络交换ネットワークの層と重みをインポートします。この関数は,DAGNetworkオブジェクトまたはdlnetworkオブジェクトと互換性のあるLayerGraphオブジェクトとしてlgraphを返します。

importONNXLayersには,ONNX模型格式的深度学习工具箱™转换器サポ,トパッケ,ジが必要です。このサポトパッケジがンストルされていない場合,importONNXLayersによってダウンロ,ド用リンクが表示されます。

メモ

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

importONNXLayersは,生成されたカスタム層をパッケ,ジ+modelfileに保存します。

importONNXLayersは,組み込みのMATLAB層への変換がサポートされていない各ONNX演算子のカスタム層を自動生成しません。サポトされていない層の処理方法の詳細にいては,ヒントを参照してください。

lgraph= importONNXLayers (modelfile名称=值は1つ以上の名前と値の引数で指定された追加オプションを使用して,ONNXネットワークから層と重みをインポートします。たとえば,OutputLayerType =“分类”DAGNetworkオブジェクトと互換性のある層グラフをインポートしますが,その際,インポートされたネットワークアーキテクチャの最初の出力分岐の末尾に分類出力層が追加されます。

すべて折りたたむ

深度学习工具箱为ONNX模型格式转换器サポートパッケージをダウンロードしてインストールします。

コマンドラ@ @ンでimportONNXLayersと入力します。

importONNXLayers

深度学习工具箱为ONNX模型格式转换器がインストールされていない場合,この関数は,必要なサポートパッケージへのリンクをアドオンエクスプローラーに表示します。サポトパッケジをンストルするには,リンクをクリックして,[huawei @ huawei @ huawei @ huawei @ huawei @ huawei]をクリックします。コマンドラ▪▪ンでモデルファ▪▪ル“simplenet.onnx”からネットワ,クを,。サポトパッケジがンストルされている場合,この関数はLayerGraphオブジェクトを返します。

modelfile =“simplenet.onnx”;lgraph = importONNXLayers(modelfile)
lgraph = LayerGraph with properties: Layers: [9×1 nnet.cnn.layer.Layer] Connections: [8×2 table] InputNames: {'imageinput'} OutputNames: {'ClassificationLayer_softmax1002'}

ネットワ,クア,キテクチャをプロットします。

情节(lgraph)

事前学習済みのonnxネットワ,クをLayerGraphオブジェクトとして▪▪ンポ▪▪トします。次に,DAGNetworkオブジェクトを作成し、組み立てたネットワ、クを使用して、メ、ジを分類します。

squeezenet畳み込みニュ,ラルネットワ,クのonnxモデルを生成します。

挤压板=挤压板;exportONNXNetwork (squeezeNet“squeezeNet.onnx”);

モデルファ@ @ルとクラス名を指定します。

modelfile =“squeezenet.onnx”;ClassNames = squeezeNet.Layers(end).Classes;

Onnxネットワクの層と重みをンポトします。既定では,importONNXLayersDAGNetworkオブジェクトと互換性のあるLayerGraphオブジェクトとしてネットワクをンポトします。

lgraph = importONNXLayers(modelfile)
lgraph = LayerGraph with properties: Layers: [70×1 nnet.cnn.layer.Layer] Connections: [77×2 table] InputNames: {'data'} OutputNames: {'ClassificationLayer_prob'}

analyzeNetwork (lgraph)

squeezenetLgraphAnalyze.png

。出力を見ると,この層グラフのネットワ,クア,キテクチャの末尾にClassificationOutputLayerがあることがわかります。

lgraph.Layers(结束)
ans = ClassificationOutputLayer与属性:名称:'ClassificationLayer_prob'类:'auto' ClassWeights: 'none' OutputSize: 'auto'超参数LossFunction: 'crossentropyex'

分類層にはクラスが含まれていないため,ネットワ,クを組み立てる前にそれを指定しなければなりません。クラスを指定しない場合,クラスは12、...、Nに自動的に設定されます。ここで,Nはクラスの数です。

分類層の名前は“ClassificationLayer_prob”です。クラスを一会に設定してから,。

cLayer = lgraph.Layers(end);粘土。Classes = ClassNames; lgraph = replaceLayer(lgraph,“ClassificationLayer_prob”、粘土);

assembleNetworkを使用して層グラフを組み立て,DAGNetworkオブジェクトを返します。

net =汇编网络(lgraph)
net = DAGNetwork with properties: Layers: [70×1 nnet.cnn.layer.Layer] Connections: [77×2 table] InputNames: {'data'} OutputNames: {'ClassificationLayer_prob'}

分類するメジを読み取り,そのメジのサズを表示します。このメジは384 × 512ピクセルで3のカラチャネル(RGB)があります。

I = imread(“peppers.png”);大小(我)
ans =1×3384 512 3

@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @メ,ジを表示します。

I = imresize(I,[227 227]);imshow(我)

@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @

分类(net,I)
标签=分类甜椒

事前学習済みのonnxネットワ,クを,dlnetworkオブジェクトと互換性のあるLayerGraphオブジェクトとして▪▪ンポ▪▪トします。その後,層グラフをdlnetworkに変換して▪▪メ▪▪ジを分類します。

squeezenet畳み込みニュ,ラルネットワ,クのonnxモデルを生成します。

挤压板=挤压板;exportONNXNetwork (squeezeNet“squeezeNet.onnx”);

モデルファ@ @ルとクラス名を指定します。

modelfile =“squeezenet.onnx”;ClassNames = squeezeNet.Layers(end).Classes;

Onnxネットワクの層と重みをンポトします。ネットワ,クをdlnetworkオブジェクトと互換性があるLayerGraphオブジェクトとして▪▪ンポ▪▪トするよう指定します。

lgraph = importONNXLayers(modelfile,TargetNetwork=“dlnetwork”
lgraph = LayerGraph with properties: Layers: [70×1 nnet.cnn.layer.Layer] Connections: [77×2 table] InputNames: {'data'} OutputNames: {1×0 cell}

分類するメジを読み取り,そのメジのサズを表示します。このメジは384 × 512ピクセルで3のカラチャネル(RGB)があります。

I = imread(“peppers.png”);大小(我)
ans =1×3384 512 3

@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @メ,ジを表示します。

I = imresize(I,[227 227]);imshow(我)

ンポ,トした層グラフをdlnetworkオブジェクトに変換します。

Dlnet = dlnetwork(lgraph);

メ,ジをdlarrayに変換します。メ,ジを次元“SSCB”(空间,空间,通道,批次)で書式設定します。この場合,バッチサ▪▪ズは1であるため,バッチサ▪▪ズを省略できます(“SSC”)。

I_dlarray = dlarray(single(I)),“SSCB”);

サンプル▪▪メ▪ジを分類し,予測されたラベルを見▪▪けます。

prob = predict(dlnet,I_dlarray);[~,label] = max(prob);

分類結果を表示します。

类名(标签)
ans =分类甜椒

事前学習済みのonnxネットワ,クをLayerGraphオブジェクトとして@ @ンポ,@ @トし,@ @ンポ,@ @トした層を組み立ててDAGNetworkオブジェクトを作成します。その後,DAGNetworkを使用して▪▪メ▪▪ジを分類します。インポートしたネットワークには,組み込みのMATLAB層への変換がサポートされていないONNX演算子が含まれています。これらの演算子を。

この例では,補助関数findCustomLayersを使用します。この関数のコ,ドを見るには,補助関数を参照してください。

ONNX模型动物园の演算子セット9と共にンポトするファルを,shufflenetとして指定します。shufflenetは,ImageNetデータベースの100年万個を超えるイメージで学習させた畳み込みニューラルネットワークです。結果として、このネットワ、クは広範囲の、メ、ジに対する豊富な特徴表現を学習しています。このネットワークは,イメージを1000個のオブジェクトカテゴリ(キーボード,マウス,鉛筆,多くの動物など)に分類できます。

modelfile =“shufflenet - 9. onnx”

shufflenetの層と重みを▪▪ンポ▪▪トします。既定では,importONNXLayersDAGNetworkオブジェクトと互換性のあるLayerGraphオブジェクトとしてネットワクをンポトします。インポートしたネットワークに,組み込みのMATLAB層への変換がサポートされていないONNX演算子が含まれている場合,importONNXLayersは,これらの層の代わりにカスタム層を自動生成できます。importONNXLayersは,生成した各カスタム層を,現在のフォルダ,内のパッケ,ジ+ shufflenet_9に個別の00ファ@ @ルとして保存します。名前と値の引数PackageNameを使用して,パッケ,ジ名を指定します。

lgraph = importONNXLayers(modelfile,PackageName=“shufflenet_9”
lgraph = LayerGraph with properties: Layers: [173×1 nnet.cnn.layer.Layer] Connections: [188×2 table] InputNames: {'gpu_0_data_0'} OutputNames: {'ClassificationLayer_gpu_0_softmax_1'}

補助関数findCustomLayersを使用して,自動生成されたカスタム層の▪▪ンデックスを見▪▪け,このカスタム層を表示します。

ind = findCustomLayers(lgraph。层,' + shufflenet_9 ');lgraph.Layers(印第安纳州)
ans = 16×1带有图层的图层数组:1 'Reshape_To_ReshapeLayer1004' shufflenet_9。Reshape_To_ReshapeLayer1004 shufflenet_9。重塑_To_ReshapeLayer1004 2 'Reshape_To_ReshapeLayer1009' shufflenet_9.Reshape_To_ReshapeLayer1009 shufflenet_9.Reshape_To_ReshapeLayer1009 3 'Reshape_To_ReshapeLayer1014' shufflenet_9.Reshape_To_ReshapeLayer1014 shufflenet_9.Reshape_To_ReshapeLayer1014 4 'Reshape_To_ReshapeLayer1019' shufflenet_9.Reshape_To_ReshapeLayer1019 shufflenet_9.Reshape_To_ReshapeLayer1019 5 'Reshape_To_ReshapeLayer1024' shufflenet_9.Reshape_To_ReshapeLayer1024 shufflenet_9.Reshape_To_ReshapeLayer1024 6 'Reshape_To_ReshapeLayer1029' shufflenet_9.Reshape_To_ReshapeLayer1029 shufflenet_9.Reshape_To_ReshapeLayer1029 7 'Reshape_To_ReshapeLayer1034' shufflenet_9.Reshape_To_ReshapeLayer1034 shufflenet_9.Reshape_To_ReshapeLayer1034 8 'Reshape_To_ReshapeLayer1039' shufflenet_9.Reshape_To_ReshapeLayer1039 shufflenet_9.Reshape_To_ReshapeLayer1039 9 'Reshape_To_ReshapeLayer1044' shufflenet_9.Reshape_To_ReshapeLayer1044 shufflenet_9.Reshape_To_ReshapeLayer1044 10 'Reshape_To_ReshapeLayer1049' shufflenet_9.Reshape_To_ReshapeLayer1049 shufflenet_9.Reshape_To_ReshapeLayer1049 11 'Reshape_To_ReshapeLayer1054' shufflenet_9.Reshape_To_ReshapeLayer1054 shufflenet_9.Reshape_To_ReshapeLayer1054 12 'Reshape_To_ReshapeLayer1059' shufflenet_9.Reshape_To_ReshapeLayer1059 shufflenet_9.Reshape_To_ReshapeLayer1059 13 'Reshape_To_ReshapeLayer1064' shufflenet_9.Reshape_To_ReshapeLayer1064 shufflenet_9.Reshape_To_ReshapeLayer1064 14 'Reshape_To_ReshapeLayer1069' shufflenet_9.Reshape_To_ReshapeLayer1069 shufflenet_9.Reshape_To_ReshapeLayer1069 15 'Reshape_To_ReshapeLayer1074' shufflenet_9.Reshape_To_ReshapeLayer1074 shufflenet_9.Reshape_To_ReshapeLayer1074 16 'Reshape_To_ReshapeLayer1079' shufflenet_9.Reshape_To_ReshapeLayer1079 shufflenet_9.Reshape_To_ReshapeLayer1079

分類層にはクラスが含まれていないため,ネットワ,クを組み立てる前にそれを指定しなければなりません。クラスを指定しない場合,クラスは12、...、Nに自動的に設定されます。ここで,Nはクラスの数です。

同じくImageNetデタベスのメジで学習させたsqueezenetから,クラス名を。

挤压板=挤压板;classNames = SqueezeNet.Layers(end).ClassNames;

分類層粘土は,lgraphの最後の層です。クラスを一会に設定してから,。

cLayer = lgraph.Layers(end)
cLayer = ClassificationOutputLayer与属性:名称:'ClassificationLayer_gpu_0_softmax_1'类:'auto' ClassWeights: 'none' OutputSize: 'auto'超参数LossFunction: 'crossentropyex'
粘土。Classes = classNames; lgraph = replaceLayer(lgraph,lgraph.Layers(end).Name,cLayer);

assembleNetworkを使用して層グラフを組み立てます。この関数は,予測に使用する準備が整ったDAGNetworkオブジェクトを返します。

net =汇编网络(lgraph)
net = DAGNetwork with properties: Layers: [173×1 nnet.cnn.layer.Layer] Connections: [188×2 table] InputNames: {'gpu_0_data_0'} OutputNames: {'ClassificationLayer_gpu_0_softmax_1'}

分類するメジを読み取り,そのメジのサズを表示します。このイメージは792 x 1056ピクセルで,3つのカラーチャネル(RGB)があります。

I = imread(“peacock.jpg”);大小(我)
ans =1×3792 1056

@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @メ,ジを表示します。

I = imresize(I,[224 224]);imshow(我)

shufflenetへの入力をさらに前処理する必要があります(詳細にいては,ONNX模型动物园のShuffleNetを参照してください)。メ,ジを再スケーリングします。学習イメージの平均を減算し、学習イメージの標準偏差で除算して、イメージを正規化します。

I = rescale(I,0,1);meanIm = [0.485 0.456 0.406];stdIm = [0.229 0.224 0.225];I = (I - remodeling (meanIm,[1 1 3]))。/重塑(stdIm,[1 1 3]);

@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @

分类(net,I)
标签=分类孔雀

補助関数

この節では,この例で使用されている補助関数findCustomLayersのコ,ドを示します。findCustomLayersは,importONNXLayersによって自動生成されたカスタム層の指数を返します。

函数index = findCustomLayers(layers,PackageName) s = what([‘。’PackageName]);索引= 0(1,长度(s.m));I = 1:长度(层数)J = 1:长度(s.m)如果strcmpi(类(层(i)), [PackageName(2:结束)“。”S.m {j}(1:end-2)]) index (j) = i;结束结束结束结束

ONNX長短期記憶(LSTM)ネットワークを層グラフとしてインポートし,プレースホルダー層を検索して置換します。LSTMネットワークでは、シーケンス データをネットワークに入力し、シーケンス データの個々のタイム ステップに基づいて予測を行うことができます。

lstmNetは,深層学習を使用したシ,ケンスの分類で作成したLSTMネットワ,クと同様のア,キテクチャとなっています。lstmNetは,続けて発音された2つの日本語の母音を表す時系列データに対してその話者を認識するように学習が行われています。

lstmNetをモデルファ@ @ルとして指定します。

modelfile =“lstmNet.onnx”

Onnxネットワクの層と重みをンポトします。既定では,importONNXLayersDAGNetworkオブジェクトと互換性のあるLayerGraphオブジェクトとしてネットワクをンポトします。

lgraph = importONNXLayers(“lstmNet.onnx”
警告:无法导入某些ONNX操作符,因为它们不受支持。万博1manbetx它们已被占位符层所取代。为了找到这些层,在返回的对象上调用findPlaceholderLayers函数。1个操作符:无法为ONNX网络输出“softmax1001”创建输出层,因为其数据格式未知或MATLAB输出层不支持。万博1manbetx如果您知道它的格式,可以使用'OutputDataFormats'参数传递它。要将ONNX网络作为函数导入,请使用importONNXFunction。
lgraph = LayerGraph with properties: Layers: [6×1 nnet.cnn.layer.Layer] Connections: [5×2 table] InputNames: {'sequenceinput'} OutputNames: {1×0 cell}

importONNXLayersは,警告を表示して出力層のプレ,スホルダ,層を挿入します。

プレ,スホルダ,層を確認するには,lgraphプロパティを表示するか,関数findPlaceholderLayersを使用します。

lgraph。层
ans = 6×1带有图层的层数组:1 'sequenceinput' Sequence Input序列输入12维序列输入2 'lstm1000' LSTM LSTM 100个隐藏单元3 'fc_MatMul' Fully Connected 9 Fully Connected Layer 4 'fc_Add' Elementwise Affine应用Elementwise缩放,然后对输入进行加法。5' flat_to_softmaxlayer1005 ' lstmNet。Flatten_To_SoftmaxLayer1005 lstmNet。平_To_SoftmaxLayer1005 6 'OutputLayer_softmax1001' PLACEHOLDER LAYER Placeholder for 'added_outputLayer' ONNX operator
placeholderLayers = findPlaceholderLayers(lgraph)
placeholderLayers = PlaceholderLayer with properties: Name: 'OutputLayer_softmax1001' ONNXNode: [1×1 struct] Weights: [] learable Parameters无属性。状态参数无属性。显示所有属性

プレ,スホルダ,層と置き換える出力層を作成します。まず,OutputLayer_softmax1001という名前の分類層を作成します。クラスを指定しない場合,クラスは12、...、Nに自動的に設定されます。ここで,Nはクラスの数です。今回の場合,クラスデ,タは,9人の話者に対応するラベル“1”,“2”,…,“9”から成る分类ベクトルです。

outputLayer =分类层(“名字”“OutputLayer_softmax1001”);

関数replaceLayerを使用して,プレ,スホルダ,層をoutputLayerに置き換えます。

lgraph =替换层(lgraph,“OutputLayer_softmax1001”, outputLayer);

層グラフのプロパティを表示して置き換えを確認します。

lgraph。层
ans = 6×1带有图层的层数组:1 'sequenceinput' Sequence Input序列输入12维序列输入2 'lstm1000' LSTM LSTM 100个隐藏单元3 'fc_MatMul' Fully Connected 9 Fully Connected Layer 4 'fc_Add' Elementwise Affine应用Elementwise缩放,然后对输入进行加法。5' flat_to_softmaxlayer1005 ' lstmNet。Flatten_To_SoftmaxLayer1005 lstmNet。平_To_SoftmaxLayer1005 6 'OutputLayer_softmax1001' Classification Output crossentropyex

または,OutputLayerTypeオプションかOutputDataFormatsオプションを使用して層グラフを▪▪ンポ▪▪トするときに出力層を定義します。findPlaceholderLayersを使用して,ンポトした層グラフにプレスホルダ層が含まれているかどうかを確認します。

lgraph1 = importONNXLayers(“lstmNet.onnx”OutputLayerType =“分类”);findPlaceholderLayers (lgraph1)
ans = 0×1带有属性的图层数组:
lgraph2 = importONNXLayers(“lstmNet.onnx”OutputDataFormats =“公元前”);findPlaceholderLayers (lgraph2)
ans = 0×1带有属性的图层数组:

ンポ,トした層グラフlgraph1およびlgraph2には,プレ,スホルダ,層が含まれていません。

importONNXLayersを使用して複数の出力をもつONNXネットワークをインポートし,インポートした層グラフを組み立ててDAGNetworkオブジェクトを作成します。

層と重みのンポト元となるネットワクファルを指定します。

modelfile =“digitsMIMO.onnx”

modelfileから層と重みを▪▪ンポ▪▪トします。digitsMIMO.onnx内のネットワクには2の出力層があります。1は数字を分類する分類層(ClassificationLayer_sm_1), 1は数字の予測角度の平均二乗誤差を計算する回帰層(RegressionLayer_fc_1_Flatten)です。

lgraph = importONNXLayers(modelfile)
lgraph = LayerGraph with properties: Layers: [19×1 nnet.cnn.layer.Layer] Connections: [19×2 table] InputNames: {'input'} OutputNames: {'ClassificationLayer_sm_1' 'RegressionLayer_fc_1_Flatten'}

情节を使用して層グラフをプロットし,lgraphの層を表示します。

情节(lgraph)

lgraph。层
ans = 19×1带有图层的图层数组:1的输入图像输入28××28日1图片2的conv_1卷积16 5×5×1的隆起与步幅[1]和填充(2 2 2 2)3的BN_1批量标准化批量标准化与16通道4的relu_1 ReLU ReLU 5‘conv_2卷积32 1×1×16旋转步(2 - 2)和填充[0 0 0 0]6‘conv_3卷积32 3×3×16旋转步(2 - 2)和填充[1 1 1 1]7“BN_2”批量标准化批量标准化32通道8 ' relu_2 ReLU ReLU 9 conv_4的卷积32 3×3×32convolutions with stride [1 1] and padding [1 1 1 1] 10 'BN_3' Batch Normalization Batch normalization with 32 channels 11 'relu_3' ReLU ReLU 12 'plus_1' Addition Element-wise addition of 2 inputs 13 'fc_1' Convolution 1 14×14×32 convolutions with stride [1 1] and padding [0 0 0 0] 14 'fc_2' Convolution 10 14×14×32 convolutions with stride [1 1] and padding [0 0 0 0] 15 'sm_1_Flatten' ONNX Flatten Flatten activations into 1-D assuming C-style (row-major) order 16 'sm_1' Softmax softmax 17 'fc_1_Flatten' ONNX Flatten Flatten activations into 1-D assuming C-style (row-major) order 18 'ClassificationLayer_sm_1' Classification Output crossentropyex 19 'RegressionLayer_fc_1_Flatten' Regression Output mean-squared-error

分類層にはクラスが含まれていないため,ネットワ,クを組み立てる前にそれを指定しなければなりません。クラスを指定しない場合,クラスは12、...、Nに自動的に設定されます。ここで,Nはクラスの数です。粘土のクラスを,01、...、9として指定します。その後,インポートした分類層を新しい層に置き換えます。

ClassNames = string(0:9);cLayer = lgraph.Layers(18);粘土。Classes = ClassNames; lgraph = replaceLayer(lgraph,“ClassificationLayer_sm_1”、粘土);

assembleNetworkを使用して層グラフを組み立てます。この関数は,予測に使用する準備が整ったDAGNetworkオブジェクトを返します。

assembledNet = assembleNetwork(lgraph)
assembledNet = DAGNetwork with properties: Layers: [19×1 nnet.cnn.layer.Layer] Connections: [19×2 table] InputNames: {'input'} OutputNames: {'ClassificationLayer_sm_1' 'RegressionLayer_fc_1_Flatten'}

入力引数

すべて折りたたむ

ネットワクを含むonnxモデルファルの名前。文字ベクトルまたは字符串スカラとして指定します。ファイルは,現在のフォルダーまたはMATLABパス上のフォルダーに含まれていなければならず,そうでなければこのファイルの絶対パスまたは相対パスを含めなければなりません。

例:“cifarResNet.onnx”

名前と値の引数

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

例:importONNXLayers (modelfile TargetNetwork =“dagnetwork GenerateCustomLayers = true, PackageName =“CustomLayers”)は,modelfile内のネットワ,ク層をDAGNetworkオブジェクトと互換性のある層グラフとしてインポートし,自動生成したカスタム層を現在のフォルダー内のパッケージ+ CustomLayersに保存します。

カスタム層の生成オプション。数値または逻辑1真正的)または合乎逻辑0)として指定します。GenerateCustomLayers真正的に設定した場合,ソフトウェアがONNX演算子をそれと等価な組み込みのMATLAB層に変換できないときに,importONNXLayersがカスタム層の生成を試みます。importONNXLayersは,生成した各カスタム層を,+PackageNameで個別の00ファ@ @ルとして保存します。カスタム層を表示または編集するには,関連する00ファ@ @ルを開きます。カスタム層の詳細にいては,深層学習のカスタム層を参照してください。

例:GenerateCustomLayers = false

importONNXLayersがカスタム層を保存するパッケ,ジの名前。文字ベクトルまたは字符串スカラとして指定します。importONNXLayersは,カスタム層のパッケ,ジ+PackageNameを現在のフォルダ,に保存します。PackageNameを指定しない場合,importONNXLayersは,カスタム層を現在のフォルダ,内の+modelfileという名前のパッケ,ジに保存します。パッケジの詳細にいては,パッケ,ジによる名前空間の作成を参照してください。

例:PackageName = " shufflenet_9 "

例:PackageName = " CustomLayers "

インポートしたネットワークアーキテクチャの深度学习工具箱ネットワークのターゲットタイプ。“dagnetwork”または“dlnetwork”として指定します。関数importONNXLayersは,DAGNetworkオブジェクトまたはdlnetworkオブジェクトと互換性のあるLayerGraphオブジェクトとしてネットワクアキテクチャをンポトします。

  • TargetNetwork“dagnetwork”として指定した場合,lgraphには,onnxモデルで指定されるか,名前と値の引数InputDataFormatsOutputDataFormatsまたはOutputLayerTypeで指定した入力層と出力層を含めなければなりません。

  • TargetNetwork“dlnetwork”として指定した場合,importONNXLayersによってlgraphの各出力分岐の末尾にCustomOutputLayerが追加され,場合によっては入力分岐の先頭にCustomInputLayerが追加されます。入力のデタ形式または入力のメジサズが不明の場合は,この関数によりCustomInputLayerが追加されます。これらの層のデタ形式に関するネットワク固有の情報にいては,CustomInputLayerオブジェクトおよびCustomOutputLayerオブジェクトのプロパティを参照してください。深度学习工具箱の入出力データ形式を解釈する方法の詳細については、Onnx入出力テンソルから組み込みのmatlab層への変換を参照してください。

例:TargetNetwork = " dlnetwork "は,dlnetworkオブジェクトと互換性のあるLayerGraphオブジェクトを▪▪ンポ▪▪トします。

ネットワ,ク入力のデ,タ形式。文字ベクトル、字符串スカラ,または字符串配列として指定します。importONNXLayersは,入力デ,タ形式をonnxファeconnxルから解釈しようと試みます。importONNXLayersが入力デ,タ形式を導出できない場合,名前と値の引数InputDataFormatsが役に立ます。

InputDataFomatsには,onnx入力テンソルの順にデ,タ形式を設定します。たとえば,InputDataFormats“BSSC”として指定した場合,インポートされたネットワークは1つのimageInputLayer入力をもます。importONNXLayersがONNX入力テンソルのデータ形式を解釈する方法,およびさまざまな深度学习工具箱入力層についてInputDataFormatsを指定する方法の詳細にいては,Onnx入出力テンソルから組み込みのmatlab層への変換を参照してください。

空のデタ形式([]または"")を指定した場合,importONNXLayersは入力デ,タ形式を自動的に解釈します。

例:InputDataFormats = ' BSSC '

例:InputDataFormats = " BSSC "

例:InputDataFormats = [" bcs”、“”、“公元前”)

例:InputDataFormats = {bcs,[],“公元前”}

デ,タ型:字符|字符串|细胞

ネットワ,ク出力のデ,タ形式。文字ベクトル、字符串スカラ,または字符串配列として指定します。importONNXLayersは,出力デ,タ形式をonnxファeconnxルから解釈しようと試みます。importONNXLayersが出力デ,タ形式を導出できない場合,名前と値の引数OutputDataFormatsが役に立ます。

OutputDataFormatsには,onnx出力テンソルの順にデ,タ形式を設定します。たとえば,OutputDataFormats“公元前”として指定した場合,インポートされたネットワークは1つのclassificationLayer出力をもます。importONNXLayersがONNX出力テンソルのデータ形式を解釈する方法,およびさまざまな深度学习工具箱出力層についてOutputDataFormatsを指定する方法の詳細にいては,Onnx入出力テンソルから組み込みのmatlab層への変換を参照してください。

空のデタ形式([]または"")を指定した場合,importONNXLayersは出力デ,タ形式を自動的に解釈します。

例:公元前OutputDataFormats = ' '

例:OutputDataFormats =“公元前”

例:OutputDataFormats = [" bcs”、“”、“公元前”)

例:OutputDataFormats = {bcs,[],“公元前”}

デ,タ型:字符|字符串|细胞

最初のネットワク入力の入力メジのサズ。2次元(高度、宽度、渠道)または3次元(高度、宽度、深度、渠道)にそれぞれ対応する,3個または4個の数値のベクトルとして指定します。modelfileのonnxモデルで入力サズが指定されていない場合にのみ,ネットワクはこの情報を使用します。

例:ImageInputSize=[28 28 1](2次元グレスケル入力メジの場合)

例:ImageInputSize=[224 224 3](2次元カラ、入力、メ、ジの場合)

例:ImageInputSize=[28 28 36 3](3次元カラ入力メジの場合)

最初のネットワク出力の層のタプ。“分类”“回归”,または“pixelclassification”として指定します。関数importONNXLayersは,ClassificationOutputLayerオブジェクト,RegressionOutputLayerオブジェクト,またはpixelClassificationLayer(计算机视觉工具箱)オブジェクトを,ンポトされたネットワクアキテクチャの最初の出力分岐の末尾に追加します。pixelClassificationLayer(计算机视觉工具箱)オブジェクトを追加するには,计算机视觉工具箱™が必要です。modelfileのonnxモデルによって出力層のタaaplプが指定されている場合,またはTargetNetwork“dlnetwork”として指定した場合,importONNXLayersは名前と値の引数OutputLayerTypeを無視します。

例:OutputLayerType = "回归"

定数畳み込みによる最適化。“深度”“浅”または“没有”として指定します。定数畳み込みは,ONNX演算子からそれと等価な組み込みのMATLAB層への変換の際に,ONNX初期化子(初期定数値)に対して演算を実行することで,インポートされたネットワークアーキテクチャを最適化します。

ソフトウェアによって等価な組み込みのMATLAB層に変換できない演算子がONNXネットワークに含まれている場合(組み込みのmatlab層への変換がサポ,トされているonnx演算子を参照),importONNXLayersは,サポ,トされない各層の代わりにプレ,スホルダ,層を挿入します。詳細にいては,ヒントを参照してください。

定数畳み込みによる最適化を行うことで,プレ,スホルダ,層の数を減らすことができます。FoldConstants“深度”に設定した場合,インポートした層に含まれるプレースホルダー層の数は,この引数を“浅”に設定した場合と同じか,それより少なくなります。ただし,インポートする時間が長くなる可能性があります。ネットワーク アーキテクチャの最適化を無効にするには、FoldConstants“没有”に設定します。

例:FoldConstants = "浅"

出力引数

すべて折りたたむ

事前学習済みのonnxモデルのネットワ,クア,キテクチャ。LayerGraphオブジェクトとして返されます。

ンポ,トした層グラフを予測に使用するには,LayerGraphオブジェクトをDAGNetworkオブジェクトまたはdlnetworkオブジェクトに変換しなければなりません。目的のワ,クフロ,に応じて,名前と値の引数TargetNetwork“dagnetwork”または“dlnetwork”として指定します。

  • assembleNetworkを使用して,LayerGraphDAGNetworkに変換します。その後,DAGNetworkオブジェクト上で,関数分类を使用してクラスラベルを予測します。

  • dlnetworkを使用して,LayerGraphdlnetworkに変換します。その後,dlnetworkオブジェクト上で,関数预测を使用してクラスラベルを予測します。正しいデ,タ形式を使用して,入力デ,タをdlarrayとして指定します(詳細にいては,dlarrayの引数fmtを参照してください)。

制限

  • importONNXLayersでサポ,トされるonnxのバ,ジョンは,次のとおりです。

    • この関数は,ONNX中間表現version 7をサポ,トしています。

    • この関数は,onnx演算子セット6 ~ 14をサポ,トしています。

メモ

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

詳細

すべて折りたたむ

組み込みのMATLAB層への変換がサポ,トされているONNX演算子

importONNXLayersは,組み込みのMATLAB層への変換を行う次のONNX演算子をサポートします(いくつかの制限があります)。

Onnx演算子 深度学习工具箱の層

添加

additionLayerまたはnnet.onnx.layer.ElementwiseAffineLayer

AveragePool

averagePooling1dLayerまたはaveragePooling2dLayer

BatchNormalization

batchNormalizationLayer

Concat

concatenationLayer

常数

なし(重みとして.ンポ.ト)

Conv

convolution1dLayerまたはconvolution2dLayer

ConvTranspose

transposedConv2dLayer

辍学

dropoutLayer

Elu

eluLayer

Gemm

fullyConnectedLayer(onnxネットワ,クが再帰型の場合),またはnnet.onnx.layer.FlattenLayerとそれに続くconvolution2dLayer(それ以外の場合)

GlobalAveragePool

globalAveragePooling1dLayerまたはglobalAveragePooling2dLayer

GlobalMaxPool

globalMaxPooling1dLayerまたはglobalMaxPooling2dLayer

格勒乌

gruLayer

InstanceNormalization

“channel-wise”として指定されたnumGroupsをもgroupNormalizationLayer

LeakyRelu

leakyReluLayer

LRN

CrossChannelNormalizationLayer

LSTM

lstmLayerまたはbilstmLayer

MatMul

fullyConnectedLayer(onnxネットワ,クが再帰型の場合),convolution2dLayer(それ以外の場合)

MaxPool

maxPooling1dLayerまたはmaxPooling2dLayer

Mul

multiplicationLayer

线性整流函数(Rectified Linear Unit)

reluLayerまたはclippedReluLayer

乙状结肠

sigmoidLayer

Softmax

softmaxLayer

总和

additionLayer

双曲正切

tanhLayer

importONNXLayersConvOnnx演算子をconvolution2dLayerとしてンポトし,Conv演算子が2の要素(p1, p2)のみをもベクトルである場合,importONNXLayersconvolution2dLayer填充オプションを(p1, p2, p1, p2)に設定します。

Onnx演算子 Onnxンポ,タ,カスタム層

剪辑

nnet.onnx.layer.ClipLayer

Div

nnet.onnx.layer.ElementwiseAffineLayer

nnet.onnx.layer.FlattenLayerまたはnnet.onnx.layer.Flatten3dLayer

身份

nnet.onnx.layer.IdentityLayer

ImageScaler

nnet.onnx.layer.ElementwiseAffineLayer

PRelu

nnet.onnx.layer.PReluLayer

重塑

nnet.onnx.layer.FlattenLayer

nnet.onnx.layer.ElementwiseAffineLayer
Onnx演算子 图像处理工具箱™
DepthToSpace depthToSpace2dLayer(图像处理工具箱)
调整 resize2dLayer(图像处理工具箱)またはresize3dLayer(图像处理工具箱)
SpaceToDepth spaceToDepthLayer(图像处理工具箱)
Upsample resize2dLayer(图像处理工具箱)またはresize3dLayer(图像处理工具箱)

ONNX入出力テンソルから組み込みのMATLAB層への変換

importONNXLayersは,ONNXネットワークの入出力テンソルのデータ形式を解釈し,それらを組み込みのMATLAB入出力層に変換しようと試みます。解釈の詳細にいては,ONNX入力テンソルから深度学习工具箱層への変換およびOnnx出力テンソルからmatlab層への変換の表を参照してください。

深度学习工具箱では,各データ形式の文字は次のラベルのいずれかでなければなりません。

  • 年代-空間

  • C-チャネル

  • B-バッチ観測値

  • T—時間またはシケンス

  • U-指定なし

ONNX入力テンソルから深度学习工具箱層への変換

デ,タ形式 デ,タの解釈 深度学习工具箱の層
Onnx入力テンソル Matlab入力形式 形状 種類
公元前 CB C行n列の配列。ここで,c は特徴の数、n は観測値の数です。 特徴 featureInputLayer
bcsBSSCCSSSSC SSCB

高x宽x c x nの数値配列。ここで,h、w、c、および n は、それぞれイメージの高さ、幅、チャネル数、および観測値の数です。

2次元 imageInputLayer
BCSSSBSSSC包括SSSC SSSCB

H×w×d×c×nの数値配列。ここで,h、w、d、c、および n は、それぞれイメージの高さ、幅、深さ、チャネル数、およびイメージの観測値の数です。

3次元 image3dInputLayer
时间待定 认知行为治疗

C x s x nの行列。ここで,c はシーケンスの特徴の数、s はシーケンス長、n はシーケンスの観測値の数です。

ベクトルシ,ケンス sequenceInputLayer
涂层 SSCBT

高x宽x c x s x nの配列。ここで,h、w、c、および n は、それぞれイメージの高さ、幅、およびチャネル数に対応し、s はシーケンス長、n はイメージ シーケンスの観測値の数です。

2次元メジシケンス sequenceInputLayer
TBCSSS SSSCBT

高x宽x深x c x s x nの配列。ここで,h、w、d、および c は、それぞれイメージの高さ、幅、深さ、およびチャネル数に対応し、s はシーケンス長、n はイメージ シーケンスの観測値の数です。

3次元メジシケンス sequenceInputLayer

ONNX出力テンソルからMATLAB層への変換

デ,タ形式 MATLAB層
Onnx出力テンソル Matlab出力形式
公元前时间待定 CB认知行为治疗 classificationLayer
bcsBSSCCSSSSCBCSSSBSSSC包括SSSC SSCBSSSCB pixelClassificationLayer(计算机视觉工具箱)
涂层TBCSSS SSCBTSSSCBT regressionLayer

インポートされたネットワークアーキテクチャ用のコードの生成

MATLAB编码器™またはGPU编码器™を深度学习工具箱と共に使用して,インポートされたネットワーク用の墨西哥人コード,スタンドアロンCPUコード,CUDA®Mexコ,ド,またはスタンドアロンcudaコ,ドを生成できます。詳細にいては,深層学習のコ,ド生成を参照してください。

  • MATLAB编码器を深度学习工具箱と共に使用して,デスクトップまたは組み込みターゲットで実行される墨西哥人コードまたはスタンドアロンCPUコードを生成します。英特尔®mml - dnnラaapl . armブラリまたは®计算ラ推导推导ラ推导推导推导公式ブラリを使用する生成済みのスタンドアロンコ推导推导推导公式ドを展開できます。あるいは,サードパーティライブラリの関数を呼び出さない汎用のC / c++コードを生成することもできます。詳細にいては,MATLAB编码器を使用した深層学習(MATLAB编码器)を参照してください。

  • GPU编码器を深度学习工具箱と共に使用して,デスクトップまたは組み込みターゲットで実行されるCUDA墨西哥人コードまたはスタンドアロンCUDAコードを生成します。CUDA 深層ニューラル ネットワーク ライブラリ (cuDNN)、TensorRT™ 高性能推論ライブラリ、または Mali GPU 向け ARM Compute ライブラリを使用する生成済みのスタンドアロン CUDA コードを展開できます。詳細については、GPU编码器を使用した深層学習(GPU编码器)を参照してください。

importONNXLayersは,ネットワ,クア,キテクチャlgraphLayerGraphオブジェクトとして返します。コ,ドを生成するには,まず,ンポ,トしたLayerGraphオブジェクトをネットワ,クに変換しなければなりません。assembleNetworkまたはdlnetworkを使用して,LayerGraphオブジェクトをDAGNetworkオブジェクトまたはdlnetworkオブジェクトに変換します。MATLAB编码器オブジェクトおよび深度学习工具箱オブジェクト用のGPU编码器サポートの詳細については,サポ,トされているクラス(MATLAB编码器)およびサポ,トされているクラス(GPU编码器)をそれぞれ参照してください。

コド生成をサポトする層をもあらゆるンポト済みネットワク用にコドを生成できます。MATLAB编码器およびGPU编码器を使用したコ,ド生成をサポ,トする層のリストにサポ,トされている層(MATLAB编码器)およびサポ,トされている層(GPU编码器)をそれぞれ参照してください。各組み込みMATLAB層のコード生成機能と制限の詳細については,各層の拡張機能の節を参照してください。例にいては,imageInputLayerコ,ド生成Gpuコ,ド生成を参照してください。

图形处理器におけるaapl / aapl / aapl / aapl / aapl / aapl

Gpu上ではimportONNXLayersは実行されません。ただし,importONNXLayersは,深層学習で使用する事前学習済みのニュ,ラルネットワ,クの層を,gpuで使用可能なLayerGraphオブジェクトとして▪▪ンポ▪▪トします。

  • assembleNetworkを使用して,LayerGraphオブジェクトをDAGNetworkオブジェクトに変換します。DAGNetworkオブジェクトでは,分类を使用して,cpuまたはgpuでクラスラベルを予測できます。名前と値の引数ExecutionEnvironmentを使用して,ハ,ドウェア要件を指定します。複数の出力があるネットワ,クの場合,関数预测を使用して,名前と値の引数ReturnCategorical真正的として指定します。

  • dlnetworkを使用して,LayerGraphオブジェクトをdlnetworkオブジェクトに変換します。dlnetworkオブジェクトでは,预测を使用して,cpuまたはgpuでクラスラベルを予測できます。入力デ,タとネットワ,クパラメ,タ,のいずれかがgpuに保存されている場合,関数预测をgpuで実行できます。

    • minibatchqueueを使用して入力デ,タのミニバッチの処理と管理を行う場合,gpuが使用可能であれば,出力はminibatchqueueオブジェクトによってgpu配列に変換されます。

    • dlupdateを使用して,dlnetworkオブジェクトの学習可能パラメタをgpu配列に変換します。

      net = dlupdate(@gpuArray,net)

  • trainNetworkを使用することにより,LayerGraphオブジェクトに1のCPUまたは1のgpuで学習させることができます。実行環境のオプションを含む学習オプションを指定するには,関数trainingOptionsを使用します。名前と値の引数ExecutionEnvironmentを使用して,ハ,ドウェア要件を指定します。学習を高速化する方法の詳細にいては,并行、gpu和云中扩展深度学习を参照してください。

GPUを使用するには并行计算工具箱™とサポートされているGPUデバイスが必要です。サポトされているデバスにいては,Gpu計算の要件(并行计算工具箱)を参照してください。

ヒント

  • インポートしたネットワークに,組み込みのMATLAB層への変換がサポートされていないONNX演算子が含まれており(組み込みのmatlab層への変換がサポ,トされているonnx演算子を参照),importONNXLayersがカスタム層を生成しない場合,importONNXLayersはサポ,トされない層の代わりにプレ,スホルダ,層を挿入します。ネットワクに含まれるサポト対象外の層の名前とンデックスを見けるには関数findPlaceholderLayersを使用します。その後,プレースホルダー層を、ユーザーが定義した新しい層に置き換えることができます。層を置き換えるには、replaceLayerを使用します。例にいては,複数の出力をもonnxネットワクのンポトと組み立てを参照してください。

  • 事前学習済みのネットワークを新しいイメージの予測または転移学習に使用するには,インポートしたモデルの学習に使用したイメージに行った前処理と同じようにイメージを前処理しなければなりません。最も一般的な前処理ステップは,イメージのサイズ変更,イメージの平均値の減算,イメージのBGR形式からRGB形式への変換です。

    • imresizeを使用します。たとえば,[3] 227227年imresize(图片)のようにします。

    • RGB形式からBGR形式にメジを変換するには,翻转を使用します。たとえば,翻转(图片3)のようにします。

    学習および予測用のメジの前処理の詳細は,メ,ジの深層学習向け前処理を参照してください。

  • MATLABは1ベスのンデックスを使用しますが,Python®は0ベスのンデックスを使用します。つまり,配列の最初の要素のインデックスは,MATLABとPythonでそれぞれ1と0になります。Matlab计算器ンデックスの詳細に计算器いては,配列@ @ンデックス付けを参照してください。MATLABで、Python で作成されたインデックス (印第安纳州)の配列を使用するには,配列を印第安纳州+ 1に変換します。

  • その他のヒントにいては,从TensorFlow, PyTorch和ONNX导入模型的技巧を参照してください。

代替機能

ONNX模型格式的深度学习工具箱转换器には,事前学習済みのonnxネットワクをンポトするための3の関数(importONNXNetworkimportONNXLayers,およびimportONNXFunction)が用意されています。各シナリオに最適なンポト関数の詳細にいては,事前学習済みのonnxネットワクをンポトする関数の選択を参照してください。

参照

[1]开放神经网络交换。https://github.com/onnx/

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

バ,ジョン履歴

R2018aで導入

すべて展開する