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 をインストールすると、ネットワークが特定の深層学習ライブラリのコード生成と互換性があるかどうかを analyzeNetworkForCodegen を使用して確認できます。次に例を示します。

result = analyzeNetworkForCodegen(mobilenetv2,TargetLibrary = 'mkldnn')

メモ

R2022b 以降では、深層学習ライブラリのコード生成互換性チェックに関数 analyzeNetworkForCodegen を使用します。coder.getDeepLearningLayers は推奨されません。

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

加算層

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

アンカー ボックス層

ありあり

あり

averagePooling2dLayer (Deep Learning Toolbox)

平均プーリング層

  • PaddingValue プロパティの 'mean' 設定を使用して C/C++コードを生成できます。

  • MATLAB Function ブロックを使用して深層学習機能を実装する Simulink® モデルでは、非ゼロのパディング値をもつ平均プーリング層がネットワークに含まれていると、シミュレーションでエラーが発生します。そのような場合は、MATLAB Function の代わりに Deep Neural Networks ライブラリのブロックを使用して深層学習機能を実装します。

ありあり

あり

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)

全結合層

ありありあり
geluLayer (Deep Learning Toolbox)

ガウス誤差線形単位 (GELU) 層

ありありあり
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) 層

あり

あり

あり

gruProjectedLayer (Deep Learning Toolbox)

GRU 投影層

なしなしあり
imageInputLayer (Deep Learning Toolbox)

イメージ入力層

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

ありありあり
layerNormalizationLayer (Deep Learning Toolbox)

レイヤー正規化層

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

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

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

長短期記憶 (LSTM) 層

ありありあり
lstmProjectedLayer (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)

シーケンス入力層

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

  • コード生成では、入力データの空間次元がゼロまたは 2 つのいずれかでなければなりません。

  • コード生成は、関数ハンドルを使用して指定された '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 オブジェクトの Initialized プロパティが true に設定されていなければなりません。

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

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

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

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

    • 可変サイズの時間 (T) 次元をもつ dlarray の入力。このような dlarray オブジェクトは、可変のシーケンス長の時系列データを表現するのに使用できます。

  • コード生成ではオブジェクト関数 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 の名前と値のペアのみがサポートされます。

あり

あり

あり

yoloxObjectDetector (Computer Vision Toolbox)

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

  • GPU コード生成用に yoloxObjectDetector オブジェクトを準備するには、vision.loadYOLOXObjectDetector (Computer Vision Toolbox) を使用します。

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

  • detect メソッドの引数 AutoResize は、コード生成定数 (coder.const()) でなければなりません。

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

あり

あり

なし

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 の名前と値のペアのみがサポートされます。

あり

あり

なし

int8 コードの生成

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

関連するトピック