importONNXLayers
ONNXネットワクからの層のンポト
説明
は,ファlgraph
= importONNXLayers (modelfile
)modelfile
から事前学習済みのONNX™(打开)神经网络交换ネットワークの層と重みをインポートします。この関数は,DAGNetwork
オブジェクトまたはdlnetwork
オブジェクトと互換性のあるLayerGraph
オブジェクトとしてlgraph
を返します。
importONNXLayers
には,ONNX模型格式的深度学习工具箱™转换器サポ,トパッケ,ジが必要です。このサポトパッケジがンストルされていない場合,importONNXLayers
によってダウンロ,ド用リンクが表示されます。
メモ
既定では,ソフトウェアがonnx演算子をそれと等価な組み込みのmatlab®層に変換できないときに,importONNXLayers
がカスタム層の生成を試みます。ソフトウェアによる変換がサポトされている演算子の一覧にいては,組み込みのmatlab層への変換がサポ,トされているonnx演算子を参照してください。
importONNXLayers
は,生成されたカスタム層をパッケ,ジ+
に保存します。modelfile
importONNXLayers
は,組み込みのMATLAB層への変換がサポートされていない各ONNX演算子のカスタム層を自動生成しません。サポトされていない層の処理方法の詳細にいては,ヒントを参照してください。
例
ONNX模型格式的深度学习工具箱转换器のダウンロ,ドと,ンスト,ル
深度学习工具箱为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)
DAGNetwork
と互換性のある層グラフとしてのonnxモデルのンポト
事前学習済みのonnxネットワ,クをLayerGraph
オブジェクトとして▪▪ンポ▪▪トします。次に,DAGNetwork
オブジェクトを作成し、組み立てたネットワ、クを使用して、メ、ジを分類します。
squeezenet
畳み込みニュ,ラルネットワ,クのonnxモデルを生成します。
挤压板=挤压板;exportONNXNetwork (squeezeNet“squeezeNet.onnx”);
モデルファ@ @ルとクラス名を指定します。
modelfile =“squeezenet.onnx”;ClassNames = squeezeNet.Layers(end).Classes;
Onnxネットワクの層と重みをンポトします。既定では,importONNXLayers
はDAGNetwork
オブジェクトと互換性のある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)
。出力を見ると,この層グラフのネットワ,クア,キテクチャの末尾にClassificationOutputLayer
があることがわかります。
lgraph.Layers(结束)
ans = ClassificationOutputLayer与属性:名称:'ClassificationLayer_prob'类:'auto' ClassWeights: 'none' OutputSize: 'auto'超参数LossFunction: 'crossentropyex'
分類層にはクラスが含まれていないため,ネットワ,クを組み立てる前にそれを指定しなければなりません。クラスを指定しない場合,クラスは1
、2
、...、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)
标签=分类甜椒
dlnetwork
と互換性のある層グラフとしてのonnxモデルのンポト
事前学習済みの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モデルのンポトとカスタム層の自動生成
事前学習済みのonnxネットワ,クをLayerGraph
オブジェクトとして@ @ンポ,@ @トし,@ @ンポ,@ @トした層を組み立ててDAGNetwork
オブジェクトを作成します。その後,DAGNetwork
を使用して▪▪メ▪▪ジを分類します。インポートしたネットワークには,組み込みのMATLAB層への変換がサポートされていないONNX演算子が含まれています。これらの演算子を。
この例では,補助関数findCustomLayers
を使用します。この関数のコ,ドを見るには,補助関数を参照してください。
ONNX模型动物园の演算子セット9と共にンポトするファルを,shufflenet
として指定します。shufflenet
は,ImageNetデータベースの100年万個を超えるイメージで学習させた畳み込みニューラルネットワークです。結果として、このネットワ、クは広範囲の、メ、ジに対する豊富な特徴表現を学習しています。このネットワークは,イメージを1000個のオブジェクトカテゴリ(キーボード,マウス,鉛筆,多くの動物など)に分類できます。
modelfile =“shufflenet - 9. onnx”;
shufflenet
の層と重みを▪▪ンポ▪▪トします。既定では,importONNXLayers
はDAGNetwork
オブジェクトと互換性のある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
分類層にはクラスが含まれていないため,ネットワ,クを組み立てる前にそれを指定しなければなりません。クラスを指定しない場合,クラスは1
、2
、...、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モデルの層グラフとしてのンポト
ONNX長短期記憶(LSTM)ネットワークを層グラフとしてインポートし,プレースホルダー層を検索して置換します。LSTMネットワークでは、シーケンス データをネットワークに入力し、シーケンス データの個々のタイム ステップに基づいて予測を行うことができます。
lstmNet
は,深層学習を使用したシ,ケンスの分類で作成したLSTMネットワ,クと同様のア,キテクチャとなっています。lstmNet
は,続けて発音された2つの日本語の母音を表す時系列データに対してその話者を認識するように学習が行われています。
lstmNet
をモデルファ@ @ルとして指定します。
modelfile =“lstmNet.onnx”;
Onnxネットワクの層と重みをンポトします。既定では,importONNXLayers
はDAGNetwork
オブジェクトと互換性のある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
という名前の分類層を作成します。クラスを指定しない場合,クラスは1
、2
、...、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
には,プレ,スホルダ,層が含まれていません。
複数の出力をもonnxネットワクのンポトと組み立て
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
分類層にはクラスが含まれていないため,ネットワ,クを組み立てる前にそれを指定しなければなりません。クラスを指定しない場合,クラスは1
、2
、...、N
に自動的に設定されます。ここで,N
はクラスの数です。粘土
のクラスを,0
、1
、...、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'}
入力引数
modelfile
- - - - - -Onnxモデルファルの名前
文字ベクトル|字符串スカラ
ネットワクを含むonnxモデルファルの名前。文字ベクトルまたは字符串スカラとして指定します。ファイルは,現在のフォルダーまたはMATLABパス上のフォルダーに含まれていなければならず,そうでなければこのファイルの絶対パスまたは相対パスを含めなければなりません。
例:“cifarResNet.onnx”
名前と値の引数
オプションの引数のペアをName1 = Value1,…,以=家
として指定します。ここで,的名字
は引数名で,价值
は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
例:importONNXLayers (modelfile TargetNetwork =“dagnetwork GenerateCustomLayers = true, PackageName =“CustomLayers”)
は,modelfile
内のネットワ,ク層をDAGNetwork
オブジェクトと互換性のある層グラフとしてインポートし,自動生成したカスタム層を現在のフォルダー内のパッケージ+ CustomLayers
に保存します。
GenerateCustomLayers
- - - - - -カスタム層の生成オプション
真正的
または1
(既定値) |假
または0
カスタム層の生成オプション。数値または逻辑1
(真正的
)または合乎逻辑0
(假
)として指定します。GenerateCustomLayers
を真正的
に設定した場合,ソフトウェアがONNX演算子をそれと等価な組み込みのMATLAB層に変換できないときに,importONNXLayers
がカスタム層の生成を試みます。importONNXLayers
は,生成した各カスタム層を,+
で個別のPackageName
00
ファ@ @ルとして保存します。カスタム層を表示または編集するには,関連する00
ファ@ @ルを開きます。カスタム層の詳細にいては,深層学習のカスタム層を参照してください。
例:GenerateCustomLayers = false
PackageName
- - - - - -カスタム層パッケ,ジの名前
文字ベクトル|字符串スカラ
importONNXLayers
がカスタム層を保存するパッケ,ジの名前。文字ベクトルまたは字符串スカラとして指定します。importONNXLayers
は,カスタム層のパッケ,ジ+
を現在のフォルダ,に保存します。PackageName
PackageName
を指定しない場合,importONNXLayers
は,カスタム層を現在のフォルダ,内の+
という名前のパッケ,ジに保存します。パッケジの詳細にいては,パッケ,ジによる名前空間の作成を参照してください。modelfile
例:PackageName = " shufflenet_9 "
例:PackageName = " CustomLayers "
TargetNetwork
- - - - - -深度学习工具箱ネットワクのタゲットタプ
“dagnetwork”
(既定値) |“dlnetwork”
インポートしたネットワークアーキテクチャの深度学习工具箱ネットワークのターゲットタイプ。“dagnetwork”
または“dlnetwork”
として指定します。関数importONNXLayers
は,DAGNetwork
オブジェクトまたはdlnetwork
オブジェクトと互換性のあるLayerGraph
オブジェクトとしてネットワクアキテクチャをンポトします。
TargetNetwork
を“dagnetwork”
として指定した場合,lgraph
には,onnxモデルで指定されるか,名前と値の引数InputDataFormats
、OutputDataFormats
またはOutputLayerType
で指定した入力層と出力層を含めなければなりません。TargetNetwork
を“dlnetwork”
として指定した場合,importONNXLayers
によってlgraph
の各出力分岐の末尾にCustomOutputLayer
が追加され,場合によっては入力分岐の先頭にCustomInputLayer
が追加されます。入力のデタ形式または入力のメジサズが不明の場合は,この関数によりCustomInputLayer
が追加されます。これらの層のデタ形式に関するネットワク固有の情報にいては,CustomInputLayer
オブジェクトおよびCustomOutputLayer
オブジェクトのプロパティを参照してください。深度学习工具箱の入出力データ形式を解釈する方法の詳細については、Onnx入出力テンソルから組み込みのmatlab層への変換を参照してください。
例:TargetNetwork = " dlnetwork "
は,dlnetwork
オブジェクトと互換性のあるLayerGraph
オブジェクトを▪▪ンポ▪▪トします。
InputDataFormats
- - - - - -ネットワ,ク入力のデ,タ形式
文字ベクトル|字符串スカラ|字符串配列
ネットワ,ク入力のデ,タ形式。文字ベクトル、字符串スカラ,または字符串配列として指定します。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,[],“公元前”}
デ,タ型:字符
|字符串
|细胞
OutputDataFormats
- - - - - -ネットワ,ク出力のデ,タ形式
文字ベクトル|字符串スカラ|字符串配列
ネットワ,ク出力のデ,タ形式。文字ベクトル、字符串スカラ,または字符串配列として指定します。importONNXLayers
は,出力デ,タ形式をonnxファeconnxルから解釈しようと試みます。importONNXLayers
が出力デ,タ形式を導出できない場合,名前と値の引数OutputDataFormats
が役に立ます。
OutputDataFormats
には,onnx出力テンソルの順にデ,タ形式を設定します。たとえば,OutputDataFormats
を“公元前”
として指定した場合,インポートされたネットワークは1つのclassificationLayer
出力をもます。importONNXLayers
がONNX出力テンソルのデータ形式を解釈する方法,およびさまざまな深度学习工具箱出力層についてOutputDataFormats
を指定する方法の詳細にいては,Onnx入出力テンソルから組み込みのmatlab層への変換を参照してください。
空のデタ形式([]
または""
)を指定した場合,importONNXLayers
は出力デ,タ形式を自動的に解釈します。
例:公元前OutputDataFormats = ' '
例:OutputDataFormats =“公元前”
例:OutputDataFormats = [" bcs”、“”、“公元前”)
例:OutputDataFormats = {bcs,[],“公元前”}
デ,タ型:字符
|字符串
|细胞
ImageInputSize
- - - - - -最初のネットワク入力の入力メジのサズ
2個または3個の数値のベクトル
最初のネットワク入力の入力メジのサズ。2次元(高度、宽度、渠道)
または3次元(高度、宽度、深度、渠道)
にそれぞれ対応する,3個または4個の数値のベクトルとして指定します。modelfile
のonnxモデルで入力サズが指定されていない場合にのみ,ネットワクはこの情報を使用します。
例:ImageInputSize=[28 28 1]
(2次元グレスケル入力メジの場合)
例:ImageInputSize=[224 224 3]
(2次元カラ、入力、メ、ジの場合)
例:ImageInputSize=[28 28 36 3]
(3次元カラ入力メジの場合)
OutputLayerType
- - - - - -最初のネットワク出力の層のタプ
“分类”
|“回归”
|“pixelclassification”
最初のネットワク出力の層のタプ。“分类”
、“回归”
,または“pixelclassification”
として指定します。関数importONNXLayers
は,ClassificationOutputLayer
オブジェクト,RegressionOutputLayer
オブジェクト,またはpixelClassificationLayer
(计算机视觉工具箱)オブジェクトを,ンポトされたネットワクアキテクチャの最初の出力分岐の末尾に追加します。pixelClassificationLayer
(计算机视觉工具箱)オブジェクトを追加するには,计算机视觉工具箱™が必要です。modelfile
のonnxモデルによって出力層のタaaplプが指定されている場合,またはTargetNetwork
を“dlnetwork”
として指定した場合,importONNXLayers
は名前と値の引数OutputLayerType
を無視します。
例:OutputLayerType = "回归"
FoldConstants
- - - - - -定数畳み込みによる最適化
“深度”
(既定値) |“浅”
|“没有”
定数畳み込みによる最適化。“深度”
、“浅”
または“没有”
として指定します。定数畳み込みは,ONNX演算子からそれと等価な組み込みのMATLAB層への変換の際に,ONNX初期化子(初期定数値)に対して演算を実行することで,インポートされたネットワークアーキテクチャを最適化します。
ソフトウェアによって等価な組み込みのMATLAB層に変換できない演算子がONNXネットワークに含まれている場合(組み込みのmatlab層への変換がサポ,トされているonnx演算子を参照),importONNXLayers
は,サポ,トされない各層の代わりにプレ,スホルダ,層を挿入します。詳細にいては,ヒントを参照してください。
定数畳み込みによる最適化を行うことで,プレ,スホルダ,層の数を減らすことができます。FoldConstants
を“深度”
に設定した場合,インポートした層に含まれるプレースホルダー層の数は,この引数を“浅”
に設定した場合と同じか,それより少なくなります。ただし,インポートする時間が長くなる可能性があります。ネットワーク アーキテクチャの最適化を無効にするには、FoldConstants
を“没有”
に設定します。
例:FoldConstants = "浅"
出力引数
lgraph
—事前学習済みのonnxモデルのネットワクアキテクチャ
LayerGraph
オブジェクト
事前学習済みのonnxモデルのネットワ,クア,キテクチャ。LayerGraph
オブジェクトとして返されます。
ンポ,トした層グラフを予測に使用するには,LayerGraph
オブジェクトをDAGNetwork
オブジェクトまたはdlnetwork
オブジェクトに変換しなければなりません。目的のワ,クフロ,に応じて,名前と値の引数TargetNetwork
を“dagnetwork”
または“dlnetwork”
として指定します。
制限
importONNXLayers
でサポ,トされるonnxのバ,ジョンは,次のとおりです。この関数は,ONNX中間表現version 7をサポ,トしています。
この関数は,onnx演算子セット6 ~ 14をサポ,トしています。
メモ
エクスポートしたネットワークをインポートする場合,元のネットワークとは異なるネットワークの層が再インポートされ,サポート対象外となる可能性があります。
詳細
組み込みのMATLAB層への変換がサポ,トされているONNX演算子
importONNXLayers
は,組み込みのMATLAB層への変換を行う次のONNX演算子をサポートします(いくつかの制限があります)。
*importONNXLayers
がConv
Onnx演算子をconvolution2dLayer
としてンポトし,Conv
演算子が2の要素(p1, p2)
のみをもベクトルである場合,importONNXLayers
はconvolution2dLayer
の填充
オプションを(p1, p2, p1, p2)
に設定します。
Onnx演算子 | Onnxンポ,タ,カスタム層 |
---|---|
|
nnet.onnx.layer.ClipLayer |
|
nnet.onnx.layer.ElementwiseAffineLayer |
|
nnet.onnx.layer.FlattenLayer またはnnet.onnx.layer.Flatten3dLayer |
|
nnet.onnx.layer.IdentityLayer |
|
nnet.onnx.layer.ElementwiseAffineLayer |
|
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 |
bcs ,BSSC ,CSS ,SSC |
SSCB |
高x宽x c x nの数値配列。ここで,h、w、c、および n は、それぞれイメージの高さ、幅、チャネル数、および観測値の数です。 |
2次元 | imageInputLayer |
BCSSS ,BSSSC ,包括 ,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 |
bcs ,BSSC ,CSS ,SSC ,BCSSS ,BSSSC ,包括 ,SSSC |
SSCB ,SSSCB |
pixelClassificationLayer (计算机视觉工具箱) |
涂层 ,TBCSSS |
SSCBT ,SSSCBT |
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
は,ネットワ,クア,キテクチャlgraph
をLayerGraph
オブジェクトとして返します。コ,ドを生成するには,まず,ンポ,トした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形式への変換です。
学習および予測用のメジの前処理の詳細は,メ,ジの深層学習向け前処理を参照してください。
MATLABは1ベスのンデックスを使用しますが,Python®は0ベスのンデックスを使用します。つまり,配列の最初の要素のインデックスは,MATLABとPythonでそれぞれ1と0になります。Matlab计算器ンデックスの詳細に计算器いては,配列@ @ンデックス付けを参照してください。MATLABで、Python で作成されたインデックス (
印第安纳州
)の配列を使用するには,配列を印第安纳州+ 1
に変換します。その他のヒントにいては,从TensorFlow, PyTorch和ONNX导入模型的技巧を参照してください。
代替機能
ONNX模型格式的深度学习工具箱转换器には,事前学習済みのonnxネットワクをンポトするための3の関数(importONNXNetwork
、importONNXLayers
,およびimportONNXFunction
)が用意されています。各シナリオに最適なンポト関数の詳細にいては,事前学習済みのonnxネットワクをンポトする関数の選択を参照してください。
バ,ジョン履歴
R2018aで導入R2021b:ImportWeights
オプションは削除済み
ImportWeights
は削除されました。R2021b以降,ONNXモデルの重みが自動的にaapl .ンポ.トされます。多くの場合,コ,ドを変更する必要はありません。
コ,ド内で
ImportWeights
が設定されていない場合,importONNXLayers
によって重みが▪▪ンポ▪▪トされます。コ,ド内で
ImportWeights
が真正的
に設定されている場合,importONNXLayers
の動作は以前と変わりません。コ,ド内で
ImportWeights
が假
に設定されている場合,importONNXLayers
は,名前と値の引数ImportWeights
を無視して重みを▪▪ンポ▪▪トします。
R2021b:importONNXLayers
はONNXファ@ @ルの情報から入出力層を作成することが不可能
OnnxモデルをDAGNetwork
オブジェクトと互換性のあるLayerGraph
オブジェクトとしてインポートする場合,インポートする層グラフには入力層と出力層が含まれていなければなりません。importONNXLayers
は,onnx入出力テンソルを組み込みのmatlab層に変換しようと試みます。これまでimportONNXLayers
を使用して組み込みのMATLAB入出力層と共にインポートできたネットワークであっても,現在はインポート時にimportONNXLayers
によってプレ,スホルダ,層が挿入される可能性があります。この場合,次のいずれかを行ってコ,ドを更新します。
名前と値の引数
TargetNetwork
を“dlnetwork”
として指定し,ネットワ,クをdlnetwork
オブジェクトと互換性のあるLayerGraph
オブジェクトとして▪▪ンポ▪▪ト。名前と値の引数
InputDataFormats
、OutputDataFormats
,およびOutputLayerType
を使用して,。importONNXFunction
を使用して,モデル関数およびONNXParameters
オブジェクトとしてネットワクをンポト。
R2021b:ンポ,トされた層の名前が異なる場合がある
。コ,ドを更新するには,層の既存の名前を新しい名前またはlgraph.Layers (n) . name
に置き換えます。
Matlabコマンド
次のmatlabコマンドに対応するリンクがクリックされました。
コマンドをmatlabコマンドウィンドウに入力して実行してください。Webブラウザ,はMATLABコマンドをサポ,トしていません。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。