メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

ディープ ネットワーク デザイナー

深層学習ネットワークの設計と可視化

説明

ディープ ネットワーク デザイナー アプリでは、深層学習ネットワークのインポート、構築、可視化、および編集ができます。このアプリを使って次のことを実行できます。

  • ネットワークを構築、編集、および結合する。

  • 事前学習済みのネットワークを読み込み、転移学習用に編集する。

  • PyTorch® および TensorFlow™ からネットワークをインポートする。

  • ネットワークを解析してアーキテクチャの定義が正しいことを確認する。

  • 圧縮技術を使用してメモリ削減のためにネットワークを解析する。

  • ネットワークを Simulink® にエクスポートする。

  • ネットワークを構築するための MATLAB® コードを生成する。

Deep Network Designer app

ディープ ネットワーク デザイナー アプリを開く

  • MATLAB ツールストリップ: [アプリ] タブの [機械学習および深層学習] にあるアプリ アイコンをクリックします。

  • MATLAB コマンド プロンプト: deepNetworkDesigner と入力します。

すべて展開する

数値特徴量データのための分類ネットワークを作成します。

ディープ ネットワーク デザイナーを開きます。

deepNetworkDesigner

空のネットワークを作成するには、[空のネットワーク][新規] をクリックします。層をドラッグ アンド ドロップできる空のキャンバスが開きます。

[層のライブラリ] から featureInputLayer をキャンバスにドラッグします。[層のライブラリ] フィルターを使用すると、層を簡単に見つけることができます。層を選択します。[プロパティ] ペインで、Normalization"zscore" に設定し、InputSize をデータの特徴数に設定します。次に、fullyConnectedLayer をキャンバスにドラッグします。層を結合するには、featureInputLayerout 端子をクリックします。fullyConnectedLayerin 端子に矢印をドラッグします。

featureInputLayer connected to a fullyConnectedLayer

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

A series of layers connected sequentially. The order of the layers is featureInputLayer, fullyConnectedLayer, layerNormalizationLayer, and reluLayer.

最後に、fullyConnectedLayer およびそれに続く softmaxLayer を追加し、それらを結合します。最後の fullyConnectedLayer で、層を選択して OutputSize をデータのクラス数に設定します。

層を自動的に整列させるには、[自動調整] をクリックします。

A series of layers connected sequentially. The order of the layers is featureInputLayer, fullyConnectedLayer, layerNormalizationLayer, reluLayer, fullyConnectedLayer, and softmaxLayer,

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

Deep Learning Network Analyzer report view. The top shows the number of learnables, layers, warnings, and errors. The left shows a plot of the network and the right shows a table with information about each layer.

ネットワークをワークスペースにエクスポートするには、[エクスポート] をクリックします。ネットワークを再作成するためのコードを生成するには、[エクスポート][パラメーターなしでネットワーク コードを生成] をクリックします。

ディープ ネットワーク デザイナーで転移学習用のネットワークを編集して、準備します。

転移学習は、事前学習済みの深層学習ネットワークを利用して、新しいタスクを学習するように微調整するプロセスです。少ない数の学習イメージを使用して、新しいタスクに学習済みの特徴を高速に転移できます。そのため、多くの場合、転移学習を使用する方が、ネットワークにゼロから学習させるよりもはるかに簡単で時間がかかりません。転移学習に事前学習済みネットワークを使用するには、新しいデータセットに一致するようにクラス数を変更しなければなりません。

ディープ ネットワーク デザイナーには、事前学習済みのさまざまなイメージ ネットワークやオーディオ ネットワークが用意されています。事前学習済みのネットワークを検討するには、ディープ ネットワーク デザイナーを開きます。

deepNetworkDesigner

Deep Network Designer start page with a selection of pretrained networks, such as SqueezeNet, GoogLeNet, and ResNet-50.

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

Deep Network Designer canvas. On the left is the Layer Library with a list of supported layers. In the middle is the network and on the right are the network properties.

転移学習用のネットワークを準備するために、最後の学習可能なパラメーターの層を編集します。SqueezeNet の最後の学習可能な層は、2 次元畳み込み層 'conv10' です。

  • 'conv10' 層を選択します。[プロパティ] ペインの下部で、[層のロックを解除] をクリックします。層のロックを解除すると、その層のすべての学習可能なパラメーターが削除されます。表示される警告ダイアログで、[そのままロックを解除] をクリックします。これにより、層のプロパティのロックが解除され、それらを新しいタスクに適応できるようになります。[NumFilters] プロパティを新しいクラス数に設定します。

  • [WeightLearnRateFactor] および [BiasLearnRateFactor] の値を 10 に増やして学習率を変更し、新しい層での学習速度を転移層より速くします。

R2023b より前: 新しいタスク用に層のプロパティを編集するには、ロックの解除ではなく層の置き換えを行わなければなりません。

Properties of a convolution2dLayer. The NumFilters property is set to 5, and the WeightLearnRateFactor and BiasLearnRateFactor properties are set to 10.

[解析] をクリックしてネットワークを確認します。"深層学習ネットワーク アナライザー" によってエラー 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");
modelfile = 
'C:\Users\jwelding\OneDrive - MathWorks\Documents\MATLAB\Examples\R2025a\supportfiles\nnet\data\PyTorchModels\mnasnet1_0.pt'

外部のプラットフォームからネットワークをインポートするには、ディープ ネットワーク デザイナーを使用します。

deepNetworkDesigner

PyTorch® または TensorFlow™ からモデルをインポートできます。

Tiles from the Deep Network Designer start page. The tiels show "Blank Network", "From Workspace", "From PyTorch", and "From TensorFlow".

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

Import PyTorch Model dialog box. In the dialog box, you can specify the location of the traced model file. The dialog box displays a note saying that the software might save custom layers to the current folder.

ディープ ネットワーク デザイナーを使用して PyTorch ネットワークをインポートする場合、ネットワークの入力サイズを指定することができます。このオプションは、入力サイズを指定することで、カスタム層の数が減少するなどの理由によってインポートの成功率が上がる可能性がある場合にのみ使用できます。

ネットワークがインポートされて [インポート レポート] が生成されます。ネットワークを学習または推論に使用する前に注意を要する問題がネットワークで発生した場合、[インポート レポート] にその問題が表示されます。たとえば、アプリが入力サイズを推定できない場合や、プレースホルダー層を完了させる必要がある場合、このレポートに警告が表示されます。

Generated import report showing one warning. The warning states that an imageInputLayer has been automatically added by the software and the InputSize property must be edited before using the network.

PyTorch® ネットワークをディープ ネットワーク デザイナーにインポートする方法、および問題がある場合にそれを解決する方法を示す例については、Import PyTorch Model Using Deep Network Designerを参照してください。

ディープ ネットワーク デザイナーから学習済みネットワークを Simulink® にエクスポートします。

ディープ ネットワーク デザイナーを開きます。

deepNetworkDesigner

アプリには 2 種類の Simulink エクスポートがあります。

  • 単一のネットワーク ブロック (たとえば、Predict ブロック) へのエクスポート

  • 複数の層ブロックへのエクスポート

すべての層が層ブロックとしてサポートされている小規模ネットワークの場合は、層ブロックへのエクスポートを推奨します。大規模なネットワークや、層ブロックとしてサポートされていない層を含むネットワークの場合は、単一のネットワーク ブロックへのエクスポートを推奨します。層ブロックとしてサポートされていない層がネットワークにある場合は、警告が表示されます。

層ブロックとしてエクスポート

この例では、[LSTM][開く] をクリックします。ネットワークを Simulink にエクスポートするには、[エクスポート][Simulink にエクスポート] を選択します。[Simulink にエクスポート] ダイアログで、[出力形式] として [複数の層ブロック] を選択します。ネットワーク パラメーターを含む Simulink ファイルを保存する場所を選択し、[エクスポート] をクリックします。ネットワークが初期化されていない場合、エクスポート時にネットワークの初期化が試みられます。

アプリによって Simulink モデルが作成されます。

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

層ブロックとしてサポートされる層の一覧については、List of Deep Learning Layer Blocks and Subsystemsを参照してください。

ネットワーク ブロックとしてエクスポート

モデルを単一のネットワーク ブロックとしてエクスポートすることもできます。ディープ ネットワーク デザイナーで、[出力形式] として [単一ネットワーク ブロック] を選択します。この例では、アプリはネットワークを Stateful Predict ブロックとしてエクスポートします。

ディープ ネットワーク デザイナー アプリを使用すると、ネットワーク アーキテクチャを再作成する MATLAB® コードを生成できます。

  • すべての初期パラメーターを含めてネットワーク内の層を再作成するには、[エクスポート][ネットワーク コードを生成] を選択します。アプリによって、ネットワークからライブ スクリプトと、初期パラメーター (重みとバイアス) を含む MAT ファイルが作成されます。スクリプトを実行して、MAT ファイルからの学習可能なパラメーターを含むネットワーク層を再作成します。転移学習を実行する場合、このオプションを使用して重みを保持します。

  • ネットワーク内の層のみを再作成するには、[エクスポート][パラメーターなしでネットワーク コードを生成] を選択します。このネットワークには、事前学習済みの重みなどの初期パラメーターが含まれません。

生成されたスクリプトを実行すると、ネットワーク アーキテクチャが dlnetwork オブジェクトとして返されます。ディープ ネットワーク デザイナーからエクスポートしたネットワークに学習させる例については、ディープ ネットワーク デザイナー入門を参照してください。コード生成の詳細については、ディープ ネットワーク デザイナーから MATLAB コードを生成を参照してください。

関連する例

プログラムでの使用

すべて展開する

deepNetworkDesigner は、ディープ ネットワーク デザイナー アプリを開きます。ディープ ネットワーク デザイナーが既に開いている場合、deepNetworkDesigner はアプリにフォーカスを移動します。

deepNetworkDesigner(net) は、ディープ ネットワーク デザイナー アプリを開き、指定されたネットワークをアプリに読み込みます。ネットワークには、層の配列、または dlnetwork オブジェクトを使用できます。DAGNetwork オブジェクトまたは SeriesNetwork オブジェクトをインポートした場合、ネットワークから dlnetwork オブジェクトへの変換が試みられます。詳細については、dag2dlnetwork を参照してください。LayerGraph オブジェクトをインポートした場合、dlnetwork オブジェクトへの変換が試みられます。

ディープ ネットワーク デザイナーが既に開いている場合、deepNetworkDesigner(net) はアプリにフォーカスを移動し、既存のネットワークに追加するか置き換えるかを尋ねるメッセージを表示します。

deepNetworkDesigner(___,"-v1") は、古い (R2024a より前の) バージョンのアプリを開きます。このバージョンは、DAGNetwork オブジェクト、SeriesNetwork オブジェクト、および LayerGraph オブジェクトをサポートします。詳細については、既定の動作の変更を参照してください。

バージョン履歴

R2018b で導入

すべて展開する