コード生成でサポートされているネットワークとレイヤー
MATLAB® Coder™ は、系列ネットワーク、有向非循環グラフ (DAG) ネットワーク、再帰型畳み込みニューラル ネットワーク (CNN または ConvNet) のコード生成をサポートします。コード生成でサポートされている層の学習済みの畳み込みニューラル ネットワークのコードを生成できます。サポートされている層を参照してください。
サポートされている事前学習済みネットワーク
次の事前学習済みネットワークは Deep Learning Toolbox™ で利用でき、コード生成をサポートしています。
ネットワーク名 | 説明 | ARM® Compute Library | Intel® MKL-DNN |
---|---|---|---|
AlexNet | AlexNet 畳み込みニューラル ネットワーク。事前学習済みの AlexNet モデルについては、 | はい | はい |
DarkNet | DarkNet-19 および DarkNet-53 畳み込みニューラル ネットワーク。事前学習済みの DarkNet モデルについては、darknet19 (Deep Learning Toolbox) および darknet53 (Deep Learning Toolbox) を参照してください。 | はい | はい |
DenseNet-201 | DenseNet-201 畳み込みニューラル ネットワーク。事前学習済みの DenseNet-201 モデルについては、 | はい | はい |
EfficientNet-b0 | EfficientNet-b0 畳み込みニューラル ネットワーク。事前学習済みの EfficientNet-b0 モデルについては、 | はい | はい |
GoogLeNet | GoogLeNet 畳み込みニューラル ネットワーク。事前学習済みの GoogLeNet モデルについては、 | はい | はい |
Inception-ResNet-v2 | Inception-ResNet-v2 畳み込みニューラル ネットワーク。事前学習済みの Inception-ResNet-v2 モデルについては、 | はい | はい |
Inception-v3 | Inception-v3 畳み込みニューラル ネットワーク。事前学習済みの Inception-v3 モデルについては、inceptionv3 (Deep Learning Toolbox) を参照してください。 | はい | はい |
MobileNet-v2 | MobileNet-v2 畳み込みニューラル ネットワーク。事前学習済みの MobileNet-v2 モデルについては | はい | はい |
NASNet-Large | NASNet-Large 畳み込みニューラル ネットワーク。事前学習済みの NASNet-Large モデルについては、 | はい | はい |
NASNet-Mobile | NASNet-Mobile 畳み込みニューラル ネットワーク。事前学習済みの NASNet-Mobile モデルについては、 | はい | はい |
ResNet | ResNet-18、ResNet-50 および ResNet-101 畳み込みニューラル ネットワーク。事前学習済みの ResNet モデルについては、 | はい | はい |
SegNet | 複数クラスのピクセル単位のセグメンテーション ネットワーク。詳細については、 | いいえ | はい |
SqueezeNet | 小規模のディープ ニューラル ネットワーク。事前学習済みの SqeezeNet モデルについては、 | はい | はい |
VGG-16 | VGG-16 畳み込みニューラル ネットワーク。事前学習済みの VGG-16 モデルについては、 | はい | はい |
VGG-19 | VGG-19 畳み込みニューラル ネットワーク。事前学習済みの VGG-19 モデルについては、 | はい | はい |
Xception | Xception 畳み込みニューラル ネットワーク。事前学習済みの Xception モデルについては、 | はい | はい |
サポートされている層
表に指定されているターゲット深層学習ライブラリについて、次の層は MATLAB Coder によるコード生成でサポートされています。
サポート パッケージの MATLAB Coder Interface for Deep Learning Libraries をインストールすると、coder.getDeepLearningLayers
を使用して、特定の深層学習ライブラリでサポートされているレイヤーのリストを確認できます。以下に例を示します。
coder.getDeepLearningLayers('mkldnn')
レイヤー名 | 説明 | ARM Compute Library | Intel 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 次元畳み込み層
| はい | あり | はい |
crop2dLayer (Deep Learning Toolbox) | 2 次元切り取りを入力に適用する層 | はい | あり | いいえ |
CrossChannelNormalizationLayer (Deep Learning Toolbox) | チャネル単位の局所応答正規化層 | はい | あり | いいえ |
カスタム層 | 問題に対して定義するカスタム層。学習可能パラメーターの有無は任意です。 以下を参照してください。
カスタム層の出力は固定サイズの配列でなければなりません。 シーケンス ネットワークにおけるカスタム層は汎用 C/C++ コード生成でのみサポートされます。 コード生成では、カスタム層に 次の場合は、カスタム層に
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++ コード生成でのみサポートされます。 |
カスタム出力層 |
カスタム分類出力層を定義して損失関数を指定する方法を示す例については、カスタム分類出力層の定義 (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 次元グローバル最大プーリング層 | はい | あり | いいえ |
| 2 次元グループ畳み込み層
| はい
| はい | いいえ |
| グループ正規化層 | はい | あり | はい |
| ゲート付き回帰型ユニット (GRU) 層 | はい | あり | はい |
imageInputLayer (Deep Learning Toolbox) | イメージ入力層
| はい | あり | はい |
leakyReluLayer (Deep Learning Toolbox) | 漏洩正規化線形ユニット (ReLU) 層 | はい | あり | はい |
lstmLayer (Deep Learning Toolbox) | 長短期記憶 (LSTM) 層 | はい | あり | はい |
maxPooling2dLayer (Deep Learning Toolbox) | 最大プーリング層 カーネル ウィンドウで非対角要素に同じ最大値がある場合、 | はい | あり | はい |
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) | シーケンス入力層
| はい | あり | はい |
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 層 | はい | あり | はい |
| 上限と下限の間の入力を切り取ります。 | はい | あり | はい |
| C スタイル (行優先) の順序であると仮定して、活性化を 1 次元にフラット化 | はい | あり | はい |
nnet.keras.layer.GlobalAveragePooling2dLayer | 空間データのグローバル平均プーリング層 | はい | あり | はい |
| パラメトリックな正規化線形ユニット | はい | あり | はい |
| シグモイド活性化層 | はい | あり | はい |
| 双曲線正接活性化層 | はい | あり | はい |
| 入力層の C スタイル (または行優先) のストレージ順序であると仮定して、入力イメージのシーケンスをベクトルのシーケンスにフラット化 | はい | あり | はい |
| 2 次元入力のためのゼロ パディング層 | はい | あり | はい |
| 上限と下限の間の入力の切り取り | はい | あり | はい |
nnet.onnx.layer.ElementwiseAffineLayer | その後に追加が続く、入力の要素単位のスケーリングを実行する層 | はい | あり | はい |
|
| はい | あり | はい |
| ONNX™ ネットワークの層のフラット化 | はい | あり | はい |
| 空間データのグローバル平均プーリング層 | はい | あり | はい |
| ONNX 恒等作用素を実装する層 | はい | あり | はい |
| パラメトリックな正規化線形ユニット | はい | あり | はい |
| シグモイド活性化層 | はい | あり | はい |
| 双曲線正接活性化層 | はい | あり | はい |
| 固定バッチ サイズの検証 | はい | あり | はい |
| 双曲線正接 (tanh) 層 | はい | あり | はい |
| 転置 2 次元畳み込み層 コード生成は、入力の非対称のトリミングをサポートしていません。たとえば、ベクトル | はい | あり | いいえ |
| 単語埋め込み層による単語インデックスのベクトルへのマッピング | はい | あり | いいえ |
| YOLO v2 オブジェクト検出ネットワークの出力層 | はい | あり | いいえ |
| YOLO v2 オブジェクト検出ネットワークの再編成層 | はい | あり | いいえ |
| YOLO v2 オブジェクト検出ネットワークの変換層 | はい | あり | いいえ |
サポートされているクラス
クラス | 説明 | ARM Compute Library | Intel MKL-DNN | 汎用 C/C++ |
---|---|---|---|---|
DAGNetwork (Deep Learning Toolbox) | 深層学習用の有向非循環グラフ (DAG) ネットワーク
| はい | あり | はい |
dlnetwork (Deep Learning Toolbox) | カスタム学習ループ用の深層学習ネットワーク
| はい | あり | はい |
SeriesNetwork (Deep Learning Toolbox) | 深層学習用の系列ネットワーク
| はい | あり | はい |
| YOLO v2 オブジェクト検出器を使用したオブジェクトの検出
| はい | あり | いいえ |
| YOLO v3 オブジェクト検出器を使用したオブジェクトの検出
| はい | あり | いいえ |
yolov4ObjectDetector (Computer Vision Toolbox) | YOLO v4 オブジェクト検出器を使用したオブジェクトの検出
| はい | あり | いいえ |
ssdObjectDetector (Computer Vision Toolbox) | SSD ベースの検出器を使用してオブジェクトを検出するためのオブジェクト。
| はい | あり | いいえ |
| LIDAR 点群でオブジェクトを検出する PointPillars ネットワーク
| はい | あり | いいえ |
量子化されたネットワークのためのコード生成
Deep Learning Toolbox Model Quantization Library サポート パッケージとともに Deep Learning Toolbox を使用して、畳み込み層の重み、バイアス、およびアクティベーションを 8 ビットにスケーリングされた整数データ型に量子化して、深層ニューラル ネットワークのメモリ フットプリントを削減できます。次に、MATLAB Coder を使用して量子化されたネットワークの最適化されたコードを生成できます。量子化された深層学習ネットワークのためのコード生成を参照してください。
参考
関連するトピック
- 事前学習済みの深層ニューラル ネットワーク (Deep Learning Toolbox)
- 畳み込みニューラル ネットワークについて (Deep Learning Toolbox)
- MATLAB Coder を使用した深層学習コード生成のワークフロー