Main Content

コード生成でサポートされているネットワークとレイヤー

MATLAB® Coder™ は、系列ネットワーク、有向非循環グラフ (DAG) ネットワーク、再帰型畳み込みニューラル ネットワーク (CNN または ConvNet) のコード生成をサポートします。コード生成でサポートされている層の学習済みの畳み込みニューラル ネットワークのコードを生成できます。サポートされている層を参照してください。

サポートされている事前学習済みネットワーク

次の事前学習済みネットワークは Deep Learning Toolbox™ で利用でき、コード生成をサポートしています。

ネットワーク名説明ARM® Compute LibraryIntel® MKL-DNN
AlexNet

AlexNet 畳み込みニューラル ネットワーク。事前学習済みの AlexNet モデルについては、alexnet (Deep Learning Toolbox) を参照してください。

はいはい
DarkNetDarkNet-19 および DarkNet-53 畳み込みニューラル ネットワーク。事前学習済みの DarkNet モデルについては、darknet19 (Deep Learning Toolbox) および darknet53 (Deep Learning Toolbox) を参照してください。はいはい
DenseNet-201

DenseNet-201 畳み込みニューラル ネットワーク。事前学習済みの DenseNet-201 モデルについては、densenet201 (Deep Learning Toolbox) を参照してください。

はいはい
EfficientNet-b0

EfficientNet-b0 畳み込みニューラル ネットワーク。事前学習済みの EfficientNet-b0 モデルについては、efficientnetb0 (Deep Learning Toolbox) を参照してください。

はいはい
GoogLeNet

GoogLeNet 畳み込みニューラル ネットワーク。事前学習済みの GoogLeNet モデルについては、googlenet (Deep Learning Toolbox) を参照してください。

はいはい
Inception-ResNet-v2

Inception-ResNet-v2 畳み込みニューラル ネットワーク。事前学習済みの Inception-ResNet-v2 モデルについては、inceptionresnetv2 (Deep Learning Toolbox) を参照してください。

はいはい
Inception-v3Inception-v3 畳み込みニューラル ネットワーク。事前学習済みの Inception-v3 モデルについては、inceptionv3 (Deep Learning Toolbox) を参照してください。はいはい
MobileNet-v2

MobileNet-v2 畳み込みニューラル ネットワーク。事前学習済みの MobileNet-v2 モデルについては mobilenetv2 (Deep Learning Toolbox) を参照してください。

はいはい
NASNet-Large

NASNet-Large 畳み込みニューラル ネットワーク。事前学習済みの NASNet-Large モデルについては、nasnetlarge (Deep Learning Toolbox) を参照してください。

はいはい
NASNet-Mobile

NASNet-Mobile 畳み込みニューラル ネットワーク。事前学習済みの NASNet-Mobile モデルについては、nasnetmobile (Deep Learning Toolbox) を参照してください。

はいはい
ResNet

ResNet-18、ResNet-50 および ResNet-101 畳み込みニューラル ネットワーク。事前学習済みの ResNet モデルについては、resnet18 (Deep Learning Toolbox)resnet50 (Deep Learning Toolbox) および resnet101 (Deep Learning Toolbox) を参照してください。

はいはい
SegNet

複数クラスのピクセル単位のセグメンテーション ネットワーク。詳細については、segnetLayers (Computer Vision Toolbox) を参照してください。

いいえはい
SqueezeNet

小規模のディープ ニューラル ネットワーク。事前学習済みの SqeezeNet モデルについては、squeezenet (Deep Learning Toolbox) を参照してください。

はいはい
VGG-16

VGG-16 畳み込みニューラル ネットワーク。事前学習済みの VGG-16 モデルについては、vgg16 (Deep Learning Toolbox) を参照してください。

はいはい
VGG-19

VGG-19 畳み込みニューラル ネットワーク。事前学習済みの VGG-19 モデルについては、vgg19 (Deep Learning Toolbox) を参照してください。

はいはい
Xception

Xception 畳み込みニューラル ネットワーク。事前学習済みの Xception モデルについては、xception (Deep Learning Toolbox) を参照してください。

はいはい

サポートされている層

表に指定されているターゲット深層学習ライブラリについて、次の層は MATLAB Coder によるコード生成でサポートされています。

サポート パッケージの MATLAB Coder Interface for Deep Learning Libraries をインストールすると、coder.getDeepLearningLayers を使用して、特定の深層学習ライブラリでサポートされているレイヤーのリストを確認できます。以下に例を示します。

coder.getDeepLearningLayers('mkldnn')

レイヤー名説明ARM Compute LibraryIntel MKL-DNN汎用 C/C++
additionLayer (Deep Learning Toolbox)

加算層

はいありはい
anchorBoxLayer (Computer Vision Toolbox)

アンカー ボックス層

はいありいいえ
averagePooling2dLayer (Deep Learning Toolbox)

平均プーリング層

はいありいいえ
batchNormalizationLayer (Deep Learning Toolbox)

バッチ正規化層

はいありはい
bilstmLayer (Deep Learning Toolbox)双方向 LSTM 層はいありはい
classificationLayer (Deep Learning Toolbox)

分類出力層の作成

はいありはい
clippedReluLayer (Deep Learning Toolbox)

クリップされた正規化線形ユニット (ReLU) 層

はいありはい
concatenationLayer (Deep Learning Toolbox)

連結層

はいありはい
convolution2dLayer (Deep Learning Toolbox)

2 次元畳み込み層

  • コード生成では、PaddingValue パラメーターを 0 (既定値) にする必要があります。

はい

あり

はい
crop2dLayer (Deep Learning Toolbox)

2 次元切り取りを入力に適用する層

はいありいいえ
CrossChannelNormalizationLayer (Deep Learning Toolbox)

チャネル単位の局所応答正規化層

はいありいいえ

カスタム層

問題に対して定義するカスタム層。学習可能パラメーターの有無は任意です。

以下を参照してください。

カスタム層の出力は固定サイズの配列でなければなりません。

シーケンス ネットワークにおけるカスタム層は汎用 C/C++ コード生成でのみサポートされます。

コード生成では、カスタム層に %#codegen プラグマが含まれている必要があります。

次の場合は、カスタム層に dlarray を渡すことができます。

  • カスタム層が dlnetwork にある。

  • カスタム層が DAG または系列ネットワークにあり、nnet.layer.Formattable から継承されるか、逆伝播がない。

dlarray メソッドがサポートされていない場合は、dlarray から基となるデータを抽出し、計算を実行して、データをコード生成用に dlarray に再構成する必要があります。次に例を示します。

function Z = predict(layer, X)

if coder.target('MATLAB')
   Z = doPredict(X);
else
   if isdlarray(X)
      X1 = extractdata(X);
      Z1 = doPredict(X1);
      Z = dlarray(Z1);
  else
      Z = doPredict(X);
  end
end

end

はい

あり

はい

シーケンス ネットワークにおけるカスタム層は汎用 C/C++ コード生成でのみサポートされます。

カスタム出力層

nnet.layer.ClassificationLayer または nnet.layer.RegressionLayer を使用して作成される、カスタム分類出力層または回帰出力層を含むすべての出力層。

カスタム分類出力層を定義して損失関数を指定する方法を示す例については、カスタム分類出力層の定義 (Deep Learning Toolbox)を参照してください。

カスタム回帰出力層を定義して損失関数を指定する方法を示す例については、カスタム回帰出力層の定義 (Deep Learning Toolbox)を参照してください。

はい

あり

はい
depthConcatenationLayer (Deep Learning Toolbox)

深さ連結層

はい

あり

いいえ
depthToSpace2dLayer (Image Processing Toolbox)2 次元深さから空間への変換層はいありはい
dicePixelClassificationLayer (Computer Vision Toolbox)

Dice ピクセル分類層は、汎用的な Dice 損失を使用して、イメージのピクセルまたはボクセルごとに categorical ラベルを提供します。

はいありいいえ
dropoutLayer (Deep Learning Toolbox)

ドロップアウト層

はいありはい
eluLayer (Deep Learning Toolbox)

指数線形ユニット (ELU) 層

はいありはい
featureInputLayer (Deep Learning Toolbox)

特徴入力層

はいありはい
flattenLayer (Deep Learning Toolbox)

フラット化層

はいありいいえ
focalLossLayer (Computer Vision Toolbox)焦点損失層は、焦点損失を使用してオブジェクト クラスを予測します。はいありいいえ
fullyConnectedLayer (Deep Learning Toolbox)

全結合層

はいありはい
globalAveragePooling2dLayer (Deep Learning Toolbox)

空間データのグローバル平均プーリング層

はい

あり

いいえ
globalMaxPooling2dLayer (Deep Learning Toolbox)

2 次元グローバル最大プーリング層

はいありいいえ

groupedConvolution2dLayer (Deep Learning Toolbox)

2 次元グループ畳み込み層

  • コード生成では、PaddingValue パラメーターを 0 (既定値) にする必要があります。

はい

  • numGroups に整数を指定する場合、その値は 2 以下でなければなりません。

はい

いいえ

groupNormalizationLayer (Deep Learning Toolbox)

グループ正規化層

はい

あり

はい

gruLayer (Deep Learning Toolbox)

ゲート付き回帰型ユニット (GRU) 層

はい

あり

はい
imageInputLayer (Deep Learning Toolbox)

イメージ入力層

  • コード生成は、関数ハンドルを使用して指定された 'Normalization' をサポートしていません。

はいありはい
leakyReluLayer (Deep Learning Toolbox)

漏洩正規化線形ユニット (ReLU) 層

はいありはい
lstmLayer (Deep Learning Toolbox)

長短期記憶 (LSTM) 層

はいありはい
maxPooling2dLayer (Deep Learning Toolbox)

最大プーリング層

カーネル ウィンドウで非対角要素に同じ最大値がある場合、maxPooling2dLayer の実装の差異により、MATLAB と生成コード間に若干の数字の不一致が生じる場合があります。この問題により、プールされた各領域の最大値のインデックスでも不一致が生じます。詳細については、maxPooling2dLayer (Deep Learning Toolbox) を参照してください。

はいありはい
maxUnpooling2dLayer (Deep Learning Toolbox)

最大逆プーリング層

カーネル ウィンドウで非対角要素に同じ最大値がある場合、maxPooling2dLayer の実装の差異により、MATLAB と生成コード間に若干の数字の不一致が生じる場合があります。この問題により、プールされた各領域の最大値のインデックスでも不一致が生じます。詳細については、maxUnpooling2dLayer (Deep Learning Toolbox) を参照してください。

いいえありいいえ
multiplicationLayer (Deep Learning Toolbox)

乗算層

はいありはい
pixelClassificationLayer (Computer Vision Toolbox)

セマンティック セグメンテーションのピクセル分類レイヤーの作成

はいありいいえ
rcnnBoxRegressionLayer (Computer Vision Toolbox)

Fast R-CNN および Faster R-CNN 用のボックス回帰層

はいありいいえ
rpnClassificationLayer (Computer Vision Toolbox)

領域提案ネットワーク (RPN) 用の分類層

はいありいいえ
regressionLayer (Deep Learning Toolbox)

回帰出力層の作成

はいありはい
reluLayer (Deep Learning Toolbox)

正規化線形ユニット (ReLU) 層

はいありはい
resize2dLayer (Image Processing Toolbox)2 次元サイズ変更層はいありはい
scalingLayer (Reinforcement Learning Toolbox)アクター ネットワークまたはクリティック ネットワーク用のスケーリング層はいありはい
sigmoidLayer (Deep Learning Toolbox)シグモイド層はいありはい
sequenceFoldingLayer (Deep Learning Toolbox)シーケンスの折りたたみ層はいありいいえ
sequenceInputLayer (Deep Learning Toolbox)

シーケンス入力層

  • ベクトル シーケンス入力では、特徴の数はコード生成中に定数でなければなりません。

  • コード生成は、関数ハンドルを使用して指定された 'Normalization' をサポートしていません。

はいありはい
sequenceUnfoldingLayer (Deep Learning Toolbox)シーケンスの展開層はいありいいえ
softmaxLayer (Deep Learning Toolbox)

ソフトマックス層

はい

あり

はい
softplusLayer (Reinforcement Learning Toolbox)

アクター ネットワークまたはクリティック ネットワーク用のソフトプラス層

はいありはい
spaceToDepthLayer (Image Processing Toolbox)

空間から深さへの変換層

はいありいいえ
ssdMergeLayer (Computer Vision Toolbox)

オブジェクト検出のための SSD マージ層

はいありいいえ
swishLayer (Deep Learning Toolbox)

Swish 層

はいありはい

nnet.keras.layer.ClipLayer

上限と下限の間の入力を切り取ります。

はいありはい

nnet.keras.layer.FlattenCStyleLayer

C スタイル (行優先) の順序であると仮定して、活性化を 1 次元にフラット化

はい

あり

はい
nnet.keras.layer.GlobalAveragePooling2dLayer

空間データのグローバル平均プーリング層

はい

あり

はい

nnet.keras.layer.PreluLayer

パラメトリックな正規化線形ユニット

はいありはい

nnet.keras.layer.SigmoidLayer

シグモイド活性化層

はい

あり

はい

nnet.keras.layer.TanhLayer

双曲線正接活性化層

はい

あり

はい

nnet.keras.layer.TimeDistributedFlattenCStyleLayer

入力層の C スタイル (または行優先) のストレージ順序であると仮定して、入力イメージのシーケンスをベクトルのシーケンスにフラット化

はいありはい

nnet.keras.layer.ZeroPadding2dLayer

2 次元入力のためのゼロ パディング層

はい

あり

はい

nnet.onnx.layer.ClipLayer

上限と下限の間の入力の切り取り

はいありはい
nnet.onnx.layer.ElementwiseAffineLayer

その後に追加が続く、入力の要素単位のスケーリングを実行する層

はいありはい

nnet.onnx.layer.FlattenInto2dLayer

CB 形式で 2 次元出力配列を生成して、ONNX で行われるように MATLAB 2 次元イメージ バッチをフラット化

はいありはい

nnet.onnx.layer.FlattenLayer

ONNX™ ネットワークの層のフラット化

はい

あり

はい

nnet.onnx.layer.GlobalAveragePooling2dLayer

空間データのグローバル平均プーリング層

はいありはい

nnet.onnx.layer.IdentityLayer

ONNX 恒等作用素を実装する層

はい

あり

はい

nnet.onnx.layer.PreluLayer

パラメトリックな正規化線形ユニット

はいありはい

nnet.onnx.layer.SigmoidLayer

シグモイド活性化層

はいありはい

nnet.onnx.layer.TanhLayer

双曲線正接活性化層

はいありはい

nnet.onnx.layer.VerifyBatchSizeLayer

固定バッチ サイズの検証

はいありはい

tanhLayer (Deep Learning Toolbox)

双曲線正接 (tanh) 層

はい

あり

はい

transposedConv2dLayer (Deep Learning Toolbox)

転置 2 次元畳み込み層

コード生成は、入力の非対称のトリミングをサポートしていません。たとえば、ベクトル [t b l r]'Cropping' パラメーターに指定して、入力の上下左右をトリミングすることはサポートされていません。

はい

あり

いいえ

wordEmbeddingLayer (Text Analytics Toolbox)

単語埋め込み層による単語インデックスのベクトルへのマッピング

はい

あり

いいえ

yolov2OutputLayer (Computer Vision Toolbox)

YOLO v2 オブジェクト検出ネットワークの出力層

はい

あり

いいえ

yolov2ReorgLayer (Computer Vision Toolbox)

YOLO v2 オブジェクト検出ネットワークの再編成層

はい

あり

いいえ

yolov2TransformLayer (Computer Vision Toolbox)

YOLO v2 オブジェクト検出ネットワークの変換層

はい

あり

いいえ

サポートされているクラス

クラス

説明

ARM Compute Library

Intel MKL-DNN

汎用 C/C++

DAGNetwork (Deep Learning Toolbox)

深層学習用の有向非循環グラフ (DAG) ネットワーク

  • activationspredict および classify メソッドのみがサポートされます。

はい

あり

はい

dlnetwork (Deep Learning Toolbox)

カスタム学習ループ用の深層学習ネットワーク

  • コード生成では InputNames プロパティと OutputNames プロパティのみがサポートされます。

  • コード生成は入力層のない dlnetwork オブジェクトをサポートしていません。dlnetwork オブジェクトの Initialized プロパティが true に設定されていなければなりません。

  • ベクトルまたはイメージ シーケンス入力をもつ dlnetwork のコードを生成できます。ARM Compute の場合、dlnetwork はシーケンス入力層とシーケンス以外の入力層をもつことができます。Intel MKL-DNN の場合、入力層はすべてシーケンス入力層にする必要があります。コード生成のサポートには以下が含まれます。

    • データ形式が 'CT' または 'CBT' のベクトル シーケンスを含む dlarray

    • データ形式が 'SSCT' または 'SSCBT' のイメージ シーケンスを含む dlarray

    • 異種混合入力層をもつ多入力 dlnetwork。RNN ネットワークの場合、複数の入力はサポートされていません。

  • コード生成ではオブジェクト関数 predict のみがサポートされます。predict メソッドの dlarray 入力は、single データ型でなければなりません。

  • コード生成では MIMO dlnetworks がサポートされます。

  • コード生成のための dlnetwork オブジェクトを作成するには、コード生成のための事前学習済みネットワークの読み込みを参照してください。

はい

あり

はい

SeriesNetwork (Deep Learning Toolbox)

深層学習用の系列ネットワーク

  • オブジェクト関数 activationsclassifypredictpredictAndUpdateStateclassifyAndUpdateState および resetState のみがサポートされます。

はい

あり

はい

yolov2ObjectDetector (Computer Vision Toolbox)

YOLO v2 オブジェクト検出器を使用したオブジェクトの検出

  • yolov2ObjectDetectordetect (Computer Vision Toolbox) メソッドのみがコード生成でサポートされます。

  • detect メソッドの引数 roi は、コード生成定数 (coder.const()) と 1 行 4 列のベクトルでなければなりません。

  • detect には、ThresholdSelectStrongestMinSize、および MaxSize の名前と値のペアのみがサポートされます。

はい

あり

いいえ

yolov3ObjectDetector (Computer Vision Toolbox)

YOLO v3 オブジェクト検出器を使用したオブジェクトの検出

  • yolov3ObjectDetectordetect (Computer Vision Toolbox) メソッドのみがコード生成でサポートされます。

  • detect メソッドの引数 roi は、コード生成定数 (coder.const()) と 1 行 4 列のベクトルでなければなりません。

  • detect には、ThresholdSelectStrongestMinSize、および MaxSize の名前と値のペアのみがサポートされます。

はい

あり

いいえ

yolov4ObjectDetector (Computer Vision Toolbox)

YOLO v4 オブジェクト検出器を使用したオブジェクトの検出

  • detect メソッドの引数 roi は、コード生成定数 (coder.const()) と 1 行 4 列のベクトルでなければなりません。

  • detect には、ThresholdSelectStrongestMinSizeMaxSize および MiniBatchSize の名前と値のペアのみがサポートされます。

はい

あり

いいえ

ssdObjectDetector (Computer Vision Toolbox)

SSD ベースの検出器を使用してオブジェクトを検出するためのオブジェクト。

  • ssdObjectDetectordetect (Computer Vision Toolbox) メソッドのみがコード生成でサポートされます。

  • detect メソッドの引数 roi は、codegen 定数 (coder.const()) と 1 行 4 列のベクトルでなければなりません。

  • ThresholdSelectStrongestMinSizeMaxSize および MiniBatchSize の名前と値のペアのみがサポートされます。すべての名前と値のペアはコンパイル時の定数でなければなりません。

  • 入力イメージのチャネルとバッチのサイズは固定サイズでなければなりません。

  • labels 出力は categorical 配列として返されます。

  • 生成されたコードで、入力はネットワークの入力層のサイズに合わせて再スケーリングされます。ただし、detect メソッドから返される境界ボックスは、元の入力サイズに準拠します。

はい

あり

いいえ

pointPillarsObjectDetector (Lidar Toolbox)

LIDAR 点群でオブジェクトを検出する PointPillars ネットワーク

  • pointPillarsObjectDetectordetect メソッドのみがコード生成でサポートされます。

  • detect メソッドの ThresholdSelectStrongest、および MiniBatchSize の名前と値のペアのみがサポートされます。

はい

あり

いいえ

量子化されたネットワークのためのコード生成

Deep Learning Toolbox Model Quantization Library サポート パッケージとともに Deep Learning Toolbox を使用して、畳み込み層の重み、バイアス、およびアクティベーションを 8 ビットにスケーリングされた整数データ型に量子化して、深層ニューラル ネットワークのメモリ フットプリントを削減できます。次に、MATLAB Coder を使用して量子化されたネットワークの最適化されたコードを生成できます。量子化された深層学習ネットワークのためのコード生成を参照してください。

参考

関連するトピック