Main Content

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

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

説明

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

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

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

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

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

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

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

Deep Network Designer app

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

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

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

すべて展開する

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

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

deepNetworkDesigner

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

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

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

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

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

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

ネットワークをワークスペースにエクスポートするには、[エクスポート] をクリックします。ネットワークを再作成するためのコードを生成するには、[エクスポート][Generate Code without Initial Parameters] をクリックします。

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

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

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

deepNetworkDesigner

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

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

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

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

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

[解析] をクリックしてネットワークを確認します。"深層学習ネットワーク アナライザー" によってエラー 0 が報告されていれば、ネットワークの学習の準備は整っています。準備したネットワークをワークスペースにエクスポートするには、[エクスポート] をクリックします。ネットワークを作成するための MATLAB コードを生成するには、[Generate Code with Initial Parameters] をクリックします。

新しいイメージを分類するためにネットワークに学習させる方法を示す例については、ディープ ネットワーク デザイナーを使用した転移学習用のネットワークの準備を参照してください。

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

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

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

deepNetworkDesigner

SqueezeNet で [開く] をクリックします。ネットワークを Simulink にエクスポートするには、[エクスポート][Simulink にエクスポート] を選択します。[Simulink にエクスポート] ダイアログで、ネットワーク パラメーターが格納された MAT ファイルを保存する場所を選択し、[エクスポート] を選択します。ネットワークが初期化されていない場合、エクスポート時にネットワークの初期化が試みられます。

アプリによって生成されるブロックは、ネットワークのタイプによって異なります。

  • Predict — 学習済み深層学習ニューラル ネットワークを使用して応答を予測します。

  • Stateful Predict — 学習済み再帰型ニューラル ネットワークを使用して応答を予測します。

SqueezeNet の場合、アプリによって 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 で導入

すべて展開する