ディープ ネットワーク デザイナー
深層学習ネットワークの設計と可視化
説明
ディープ ネットワーク デザイナー アプリでは、深層学習ネットワークのインポート、構築、可視化、および編集ができます。このアプリを使って次のことを実行できます。
ネットワークを構築、編集、および結合する。
事前学習済みのネットワークを読み込み、転移学習用に編集する。
PyTorch® および TensorFlow™ からネットワークをインポートする。
ネットワークを解析してアーキテクチャの定義が正しいことを確認する。
圧縮技術を使用してメモリ削減のためにネットワークを解析する。
ネットワークを Simulink® にエクスポートする。
ネットワークを構築するための MATLAB® コードを生成する。

ディープ ネットワーク デザイナー アプリを開く
MATLAB ツールストリップ: [アプリ] タブの [機械学習および深層学習] にあるアプリ アイコンをクリックします。
MATLAB コマンド プロンプト:
deepNetworkDesignerと入力します。
例
数値特徴量データのための分類ネットワークを作成します。
ディープ ネットワーク デザイナーを開きます。
deepNetworkDesigner
空のネットワークを作成するには、[空のネットワーク] で [新規] をクリックします。層をドラッグ アンド ドロップできる空のキャンバスが開きます。
[層のライブラリ] から featureInputLayer をキャンバスにドラッグします。[層のライブラリ] フィルターを使用すると、層を簡単に見つけることができます。層を選択します。[プロパティ] ペインで、Normalization を "zscore" に設定し、InputSize をデータの特徴数に設定します。次に、fullyConnectedLayer をキャンバスにドラッグします。層を結合するには、featureInputLayer で out 端子をクリックします。fullyConnectedLayer の in 端子に矢印をドラッグします。

layerNormalizationLayer およびそれに続く reluLayer をキャンバスに追加し、それらを順番に結合します。

最後に、fullyConnectedLayer およびそれに続く softmaxLayer を追加し、それらを結合します。最後の fullyConnectedLayer で、層を選択して OutputSize をデータのクラス数に設定します。
層を自動的に整列させるには、[自動調整] をクリックします。

ネットワークの学習の準備が整っていることを確認するには、[解析] を選択します。ネットワークに関する警告とエラーが存在しないことが、深層学習ネットワーク アナライザーに示されます。

ネットワークをワークスペースにエクスポートするには、[エクスポート] をクリックします。ネットワークを再作成するためのコードを生成するには、[エクスポート]、[パラメーターなしでネットワーク コードを生成] をクリックします。
ディープ ネットワーク デザイナーで転移学習用のネットワークを編集して、準備します。
転移学習は、事前学習済みの深層学習ネットワークを利用して、新しいタスクを学習するように微調整するプロセスです。少ない数の学習イメージを使用して、新しいタスクに学習済みの特徴を高速に転移できます。そのため、多くの場合、転移学習を使用する方が、ネットワークにゼロから学習させるよりもはるかに簡単で時間がかかりません。転移学習に事前学習済みネットワークを使用するには、新しいデータセットに一致するようにクラス数を変更しなければなりません。
ディープ ネットワーク デザイナーには、事前学習済みのさまざまなイメージ ネットワークやオーディオ ネットワークが用意されています。事前学習済みのネットワークを検討するには、ディープ ネットワーク デザイナーを開きます。
deepNetworkDesigner

この例では、SqueezeNet で [開く] をクリックします。

転移学習用にネットワークを準備するには、次のようにします。
[クラス数] を新しいクラス数に設定します。これにより、最後の学習可能な層の
NumFiltersプロパティが設定されます。NumFiltersプロパティは、分類問題のクラス数を定義します。[最後の学習可能な層における学習率] の値を増やして、最後の学習可能な層での学習速度を転移層より速くします。これにより、最後の学習可能な層の
WeightLearnRateFactorプロパティとBiasLearnRateFactorプロパティが設定されます。[インポート] をクリックします。
R2025b より前: ネットワークを新しいデータに適応させるには、[デザイナー] ペインで最後の学習可能な層をクリックし、[層のロックを解除] をクリックして、その NumFilters プロパティを新しいデータのクラス数に設定し、WeightLearnRateFactor プロパティと BiasLearnRateFactor プロパティの値を増やさなければなりません。

[解析] をクリックしてネットワークを確認します。"深層学習ネットワーク アナライザー" によってエラー 0 が報告されていれば、ネットワークの学習の準備は整っています。準備したネットワークをワークスペースにエクスポートするには、[エクスポート] をクリックします。ネットワークを作成するための MATLAB コードを生成するには、[ネットワーク コードを生成] をクリックします。
新しいイメージを分類するためにネットワークに学習させる方法を示す例については、ディープ ネットワーク デザイナーを使用した転移学習用のネットワークの準備を参照してください。
PyTorch® または TensorFlow™ からニューラル ネットワークをインポートします。
この例では、MNASNet (Copyright© Soumith Chintala 2016) PyTorch モデルをインポートします。MathWorks の Web サイトから、mnasnet1_0 ファイルをダウンロードします。ファイルのサイズは約 17 MB です。
modelfile = matlab.internal.examples.downloadSupportFile("nnet", ... "data/PyTorchModels/mnasnet1_0.pt");
外部のプラットフォームからネットワークをインポートするには、ディープ ネットワーク デザイナーを使用します。
deepNetworkDesigner
PyTorch® または TensorFlow™ からモデルをインポートできます。

PyTorch® モデルの場合は [PyTorch から] アイコンをクリックします。[PyTorch モデルのインポート] ダイアログ ボックスで、モデル ファイルの場所をコピーして [インポート] をクリックします。

ディープ ネットワーク デザイナーを使用して PyTorch ネットワークをインポートする場合、ネットワークの入力サイズを指定することができます。このオプションは、入力サイズを指定することで、カスタム層の数が減少するなどの理由によってインポートの成功率が上がる可能性がある場合にのみ使用できます。
ネットワークがインポートされて [インポート レポート] が生成されます。ネットワークを学習または推論に使用する前に注意を要する問題がネットワークで発生した場合、[インポート レポート] にその問題が表示されます。たとえば、アプリが入力サイズを推定できない場合や、プレースホルダー層を完了させる必要がある場合、このレポートに警告が表示されます。

PyTorch® ネットワークをディープ ネットワーク デザイナーにインポートする方法、および問題がある場合にそれを解決する方法を示す例については、ディープ ネットワーク デザイナーを使用した PyTorch モデルのインポートを参照してください。
ディープ ネットワーク デザイナーから学習済みネットワークを Simulink® にエクスポートします。
ディープ ネットワーク デザイナーを開きます。
deepNetworkDesigner
アプリには 2 種類の Simulink エクスポートがあります。
単一のネットワーク ブロック (たとえば、Predict ブロック) へのエクスポート
複数の層ブロックへのエクスポート
すべての層が層ブロックとしてサポートされている小規模ネットワークの場合は、層ブロックへのエクスポートを推奨します。大規模なネットワークや、層ブロックとしてサポートされていない層を含むネットワークの場合は、単一のネットワーク ブロックへのエクスポートを推奨します。層ブロックとしてサポートされていない層がネットワークにある場合は、警告が表示されます。
層ブロックとしてエクスポート
この例では、[LSTM] で [開く] をクリックします。ネットワークを Simulink にエクスポートするには、[エクスポート]、[Simulink にエクスポート] を選択します。[Simulink にエクスポート] ダイアログで、[出力形式] として [複数の層ブロック] を選択します。ネットワーク パラメーターを含む Simulink ファイルを保存する場所を選択し、[エクスポート] をクリックします。ネットワークが初期化されていない場合、エクスポート時にネットワークの初期化が試みられます。
アプリによって Simulink モデルが作成されます。

my_model_1 内をクリックすると、個々の層ブロックが表示されます。

層ブロックとしてサポートされる層の一覧については、List of Deep Learning Layer Blocks and Subsystemsを参照してください。
ネットワーク ブロックとしてエクスポート
モデルを単一のネットワーク ブロックとしてエクスポートすることもできます。ディープ ネットワーク デザイナーで、[出力形式] として [単一ネットワーク ブロック] を選択します。この例では、アプリはネットワークを Stateful Predict ブロックとしてエクスポートします。

ステートフルなニューラル ネットワークの場合、エクスポートされたモデルは固定タイム ステップの離散ソルバーを使用します。Stateful Predict ブロックまたはローカル ソルバーで指定するステップ時間を、モデルの学習に使用した時間と確実に一致させてください。
ディープ ネットワーク デザイナー アプリを使用すると、ネットワーク アーキテクチャを再作成する MATLAB® コードを生成できます。
すべての初期パラメーターを含めてネットワーク内の層を再作成するには、[エクスポート]、[ネットワーク コードを生成] を選択します。アプリによって、ネットワークからライブ スクリプトと、初期パラメーター (重みとバイアス) を含む MAT ファイルが作成されます。スクリプトを実行して、MAT ファイルからの学習可能なパラメーターを含むネットワーク層を再作成します。転移学習を実行する場合、このオプションを使用して重みを保持します。
ネットワーク内の層のみを再作成するには、[エクスポート]、[パラメーターなしでネットワーク コードを生成] を選択します。このネットワークには、事前学習済みの重みなどの初期パラメーターが含まれません。
生成されたスクリプトを実行すると、ネットワーク アーキテクチャが dlnetwork オブジェクトとして返されます。ディープ ネットワーク デザイナーからエクスポートしたネットワークに学習させる例については、ディープ ネットワーク デザイナー入門を参照してください。コード生成の詳細については、ディープ ネットワーク デザイナーから MATLAB コードを生成を参照してください。
関連する例
プログラムでの使用
deepNetworkDesigner は、ディープ ネットワーク デザイナー アプリを開きます。ディープ ネットワーク デザイナーが既に開いている場合、deepNetworkDesigner はアプリにフォーカスを移動します。
deepNetworkDesigner( は、ディープ ネットワーク デザイナー アプリを開き、指定されたネットワークをアプリに読み込みます。ネットワークには、層の配列、または net)dlnetwork オブジェクトを使用できます。DAGNetwork オブジェクトまたは SeriesNetwork オブジェクトをインポートした場合、ネットワークから dlnetwork オブジェクトへの変換が試みられます。詳細については、dag2dlnetwork を参照してください。LayerGraph オブジェクトをインポートした場合、dlnetwork オブジェクトへの変換が試みられます。
ディープ ネットワーク デザイナーが既に開いている場合、deepNetworkDesigner(net) はアプリにフォーカスを移動し、既存のネットワークに追加するか置き換えるかを尋ねるメッセージを表示します。
deepNetworkDesigner(___, は、古い (R2024a より前の) バージョンのアプリを開きます。このバージョンは、"-v1")DAGNetwork オブジェクト、SeriesNetwork オブジェクト、および LayerGraph オブジェクトをサポートします。詳細については、既定の動作の変更を参照してください。
バージョン履歴
R2018b で導入以下のオブジェクトをディープ ネットワーク デザイナーにインポートできるようになりました。
ClassificationNeuralNetwork(Statistics and Machine Learning Toolbox)CompactClassificationNeuralNetwork(Statistics and Machine Learning Toolbox)RegressionNeuralNetwork(Statistics and Machine Learning Toolbox)CompactRegressionNeuralNetwork(Statistics and Machine Learning Toolbox)
インポート時に、アプリはこれらのオブジェクトを dlnetwork オブジェクトに変換します。
torch.export.export() を使用してエクスポートされた PyTorch の ExportedProgram オブジェクトをインポートできるようになりました。モデルは PyTorch version 2.8 を使用してエクスポートしなければなりません。
ディープ ネットワーク デザイナー アプリがいくつかの点で改善されました。
ネットワークの一部を選択し、[選択に合わせる] ボタンを使用することで、その部分を拡大表示できます。
MAT ファイル (
*.mat) からネットワークをアプリに直接インポートできます。アプリのツールストリップにある [ワークスペースから] ボタンを使用して、MATLAB ワークスペースからネットワークと個々の層を数回のクリックでインポートできます。
[プロパティ] パネルでカスタム層の長い説明を表示できます。長い説明の名前は、外部プラットフォームからネットワークをインポートするときによく使用されます。
サブネットワークを開くボタンを使用することで、ネットワーク層の内部をすばやく表示できます。
Simulink へのエクスポート ワークフローが改善されました。アプリは、ネットワーク入力を使用して、シミュレーション用の Predict ブロックを自動的に構成するようになりました。また、シーケンス入力をもつネットワークの場合、アプリは固定タイム ステップを使用するようにシミュレーション ソルバーを構成します。
入れ子層 (
networkLayerなど) を含むネットワークを Simulink にエクスポートする場合、アプリはコード生成ワークフローとの互換性を保つために入れ子層を自動的に展開します。キャンバス上の接続のレイアウトが改善され、層と接続の重なりが最小限に抑えられます。
ディープ ネットワーク デザイナー アプリで、事前学習済みのイメージ ネットワークを転移学習に簡単に適応できるようになりました。ディープ ネットワーク デザイナーのスタート ページで事前学習済みのイメージ ネットワークを開いたときに、新しい [事前学習済みネットワークのカスタマイズ] ダイアログ ボックスを使用して、最後の学習可能な層におけるクラス数と学習率を変更します。
事前学習済みのイメージ ネットワークを転移学習用に適応させる方法を示す例については、転移学習入門を参照してください。
入れ子層の内部を表示するには、ディープ ネットワーク デザイナーを使用します。たとえば、NetworkLayer オブジェクトの内部を表示できるようになりました。入れ子層は、PyTorch や TensorFlow などの外部プラットフォームからネットワークをインポートするときによく使用されます。入れ子層の内部を表示するには、層をダブルクリックします。入れ子層をもつネットワークの構築、可視化、学習の方法を示す例については、Create and Train Network with Nested Layersを参照してください。
R2025a 以降、ディープ ネットワーク デザイナーは既定で、NetworkLayer オブジェクトを使用して PyTorch および TensorFlow のネットワーク構成を表します。R2025a より前では、アプリは入れ子のカスタム層を使用してネットワーク構成を表します。
ディープ ネットワーク デザイナーを使用して、深層ニューラル ネットワークを Simulink 層ブロックにエクスポートします。アプリは、ネットワーク内の層に対応するブロックを含む Simulink モデルを返します。サポートされている層の詳細については、List of Deep Learning Layer Blocks and Subsystemsを参照してください。
R2025a 以降、ネットワークを Simulink にエクスポートするときに、アプリはネットワーク アーキテクチャに基づいて既定の動作を選択します。すべての層が層ブロックとしてサポートされている場合、既定のエクスポート タイプは層ブロックになります。それ以外の場合、既定のエクスポート タイプは、Predict ブロックや Stateful Predict ブロックなどのネットワーク ブロックになります。
R2025a 以降、[圧縮用の解析] オプションからのレポートに量子化に関する情報が含まれるようになりました。
圧縮解析レポートに次の内容が含まれるようになりました。
量子化によって可能になる最大メモリ削減量
ネットワークの層に対する量子化のサポート
ニューラル ネットワークの圧縮手法の詳細については、Reduce Memory Footprint of Deep Neural Networksを参照してください。
ディープ ネットワーク デザイナーに、アプリ使用時のユーザー エクスペリエンスを向上させるいくつかの機能が追加されました。
キーボード ショートカットを使用してダイアログ ボックスを確認または閉じる。
ネットワークのエクスポート名を指定する。
ネットワーク解析情報をアプリ内で直接表示する。
ディープ ネットワーク デザイナーのスタート ページに、多層パーセプトロン (MLP) ニューラル ネットワークのテンプレートが追加されました。このテンプレートを使用すると、特徴分類タスクに適した MLP ネットワークをすばやく作成できます。
ディープ ネットワーク デザイナーを使用して、ニューラル ネットワークの圧縮率を解析できるようになりました。たとえば、テイラー枝刈りまたは投影を使用して、ネットワーク層の最大メモリ削減量を確認できます。
ディープ ネットワーク デザイナーでネットワークを開きます。次に、[圧縮用の解析] をクリックします。
圧縮解析レポートには、次の情報が含まれます。
可能な最大メモリ削減量
枝刈りと投影のサポート
個々の層を枝刈りする能力に対するネットワーク アーキテクチャの影響
層メモリ
ディープ ネットワーク デザイナーのスタート ページに、1 次元畳み込みニューラル ネットワークのテンプレートが追加されました。テンプレートを使用すると、sequence-to-label や sequence-to-sequence の分類タスクに適した 1 次元畳み込みニューラル ネットワークをすばやく作成できます。
R2024a 以降、ディープ ネットワーク デザイナーは、既定で dlnetwork オブジェクトを作成します。DAGNetwork オブジェクトまたは SeriesNetwork オブジェクトをインポートした場合、ネットワークから dlnetwork オブジェクトへの変換が試みられます。詳細については、dag2dlnetwork を参照してください。LayerGraph オブジェクトをインポートした場合、dlnetwork オブジェクトへの変換が試みられます。
dlnetwork オブジェクトにはいくつかの利点があるため、DAGNetwork オブジェクト、SeriesNetwork オブジェクト、または LayerGraph オブジェクトの代わりにこのオブジェクトを使うことを推奨します。
dlnetworkオブジェクトは、ネットワークの構築、予測、組み込み学習、可視化、圧縮、検証、およびカスタム学習ループをサポートする統合されたデータ型です。dlnetworkオブジェクトは、ユーザーが作成したり外部のプラットフォームからインポートしたりできる、さまざまなネットワーク アーキテクチャをサポートしています。関数
trainnetはdlnetworkオブジェクトをサポートしているため、損失関数を簡単に指定できます。組み込みの損失関数を選択するか、カスタム損失関数を指定できます。dlnetworkオブジェクトを使用した学習と予測は、通常、LayerGraphとtrainNetworkを使用したワークフローよりも高速です。
R2024a より前のアプリの動作を再現するには、"-v1" フラグを使用します。
deepNetworkDesigner("-v1") deepNetworkDesigner(net,"-v1")
ディープ ネットワーク デザイナーの動作の比較
非推奨 | 推奨 |
|---|---|
古いバージョンのディープ ネットワーク デザイナーでは、
| R2024a 以降のディープ ネットワーク デザイナーでは、
|
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)