ディープ ネットワーク デザイナー
深層学習ネットワークの設計、可視化、および学習
説明
ディープ ネットワーク デザイナー アプリでは、深層学習ネットワークの構築、可視化、編集、および学習ができます。このアプリを使って次のことを実行できます。
Each image shows a digit from 0 to 9, rotated by a certain angleネットワークを構築、インポート、編集、および結合する。
事前学習済みのネットワークを読み込み、転移学習用に編集する。
層のプロパティを表示および編集し、新しい層と結合を追加する。
ネットワークを解析してネットワーク アーキテクチャの定義が正しいことを確認し、学習の前に問題を検出する。
学習および検証のためのデータストアおよびイメージ データをインポート、可視化する。
イメージ分類学習データへ拡張を適用し、クラス ラベルの分布を可視化する。
ネットワークに学習させ、精度、損失、検証メトリクスのプロットを使用した学習を監視する。
学習済みネットワークをワークスペースまたは Simulink® にエクスポートする。
ネットワークの構築と学習を行う MATLAB® コードを生成し、実験マネージャーを使用してハイパーパラメーター調整のための実験を作成する。

ディープ ネットワーク デザイナー アプリを開く
MATLAB ツールストリップ: [アプリ] タブの [機械学習および深層学習] にあるアプリ アイコンをクリックします。
MATLAB コマンド プロンプト:
deepNetworkDesigner
と入力します。
例
事前学習済みのネットワークの選択
ディープ ネットワーク デザイナーで事前学習済みのネットワークを調べます。
アプリを開き、事前学習済みのネットワークを選択します。[デザイナー] タブを選択し、[新規] をクリックして事前学習済みのネットワークを読み込むこともできます。ネットワークをダウンロードする必要がある場合は、[インストール] をクリックしてアドオン エクスプローラーを開きます。ディープ ネットワーク デザイナーには、イメージ タスクやオーディオ タスクに適した事前学習済みのネットワークが用意されています。事前学習済みのオーディオ ネットワークを読み込むには、Audio Toolbox™ が必要です。
ヒント
はじめに、SqueezeNet や GoogLeNet などのより高速なイメージ分類ネットワークの 1 つを選択してみてください。どの設定が適切に機能するかを理解したら、Inception-v3 や ResNet などのより正確なネットワークを試し、結果が改善されるか確認します。事前学習済みのネットワークの選択の詳細については、事前学習済みの深層ニューラル ネットワークを参照してください。
[デザイナー] ペインでは、ネットワークを可視化して確認します。使用可能な事前学習済みイメージ分類ネットワークの一覧、およびそれらを比較する方法については、事前学習済みの深層ニューラル ネットワークを参照してください。
ディープ ネットワーク デザイナーによるネットワーク構築の詳細については、ディープ ネットワーク デザイナーを使用したネットワークの構築を参照してください。
転移学習用の事前学習済みのネットワークの編集
ディープ ネットワーク デザイナーで転移学習用のネットワークを編集して、準備します。
転移学習は、事前学習済みの深層学習ネットワークを利用して、新しいタスクを学習するように微調整するプロセスです。少ない数の学習イメージを使用して、新しいタスクに学習済みの特徴を高速に転移できます。そのため、多くの場合、転移学習を使用する方が、ネットワークにゼロから学習させるよりもはるかに簡単で時間がかかりません。転移学習に事前学習済みネットワークを使用するには、新しいデータセットに一致するようにクラス数を変更しなければなりません。
SqueezeNet でディープ ネットワーク デザイナーを開きます。
deepNetworkDesigner(squeezenet)
転移学習用のネットワークを準備するために、最後の学習可能な層と最終分類層を置き換えます。SqueezeNet の最後の学習可能な層は、'conv10'
という名前の 2 次元畳み込み層です。
新しい [convolution2dLayer] をキャンバスにドラッグします。[FilterSize] プロパティを
1,1
に、[NumFilters] プロパティを新しいクラス数に設定します。[WeightLearnRateFactor] および [BiasLearnRateFactor] の値を増やして学習率を変更し、新しい層での学習速度を転移層より速くします。
最後の [convolution2dLayer] を削除し、代わりに新しい層を結合します。
ヒント
大半の事前学習済みネットワーク (GoogLeNet など) では、最後の学習可能な層は全結合層です。転移学習用にネットワークを準備するには、全結合層を新しい全結合層に置き換え、[OutputSize] プロパティを新しいクラス数に設定します。例については、ディープ ネットワーク デザイナー入門を参照してください。
次に、分類出力層を削除します。次に、新しい [classificationLayer] をキャンバスにドラッグして代わりに結合します。出力層が既定の設定の場合、ネットワークは学習中にクラス数を学習することになります。
[デザイナー] タブの [解析] をクリックして、ネットワークを確認してください。[深層学習ネットワーク アナライザー] によってエラー 0 が報告されていれば、ネットワークの学習の準備は整っています。新しいイメージを分類するためにネットワークに学習させる方法を示す例については、ディープ ネットワーク デザイナーを使用した転移学習を参照してください。
層のプロパティに関するヘルプの表示
層のプロパティについて理解し編集するためのヘルプを表示するには、層の名前の横にあるヘルプ アイコンをクリックしてください。
[デザイナー] ペインで層を選択し、プロパティを表示して編集します。層のプロパティに関する詳細情報については、層の名前の横にあるヘルプ アイコンをクリックしてください。
層のプロパティの詳細については、深層学習層の一覧を参照してください。
ネットワークへのカスタム層の追加
ディープ ネットワーク デザイナーでワークスペースからネットワークに層を追加します。
ディープ ネットワーク デザイナーでは、組み込みの層を [層のライブラリ] から [デザイナー] ペインにドラッグして結合することでネットワークを構築できます。[デザイナー] ペインで、ワークスペースからネットワークにカスタム層を追加することもできます。変数 myCustomLayer
にカスタム層が格納されているとします。
[デザイナー] タブの [新規] をクリックします。
[ワークスペースから] で一時停止し、[インポート] をクリックします。
myCustomLayer
を選択し、[OK] をクリックします。[追加] をクリックします。
アプリによって [デザイナー] ペインの上部にカスタム層が追加されます。新しい層を表示するには、マウスを使用してズームインするか、[ズームイン] をクリックします。
[デザイナー] ペインで [myCustomLayer] をネットワークに結合します。ディープ ネットワーク デザイナーでカスタム層を使ってネットワークを構築する方法を示す例については、ディープ ネットワーク デザイナーへのカスタム層のインポートを参照してください。
ディープ ネットワーク デザイナーでネットワークを結合することもできます。たとえば、事前学習済みのネットワークと復号化器のサブネットワークを組み合わせて、セマンティック セグメンテーション ネットワークを作成できます。
学習用データのインポート
学習用のデータをディープ ネットワーク デザイナーにインポートします。
ディープ ネットワーク デザイナーの [データ] タブを使用して、学習データおよび検証データをインポートできます。ディープ ネットワーク デザイナーは、イメージ データおよびデータストア オブジェクトのインポートをサポートしています。タスクのタイプに基づいてインポート方法を選択します。
タスク | データ型 | データのインポート方法 | 可視化の例 |
---|---|---|---|
イメージ分類 |
| [データのインポート] 、 [イメージ データのインポート] を選択します。 [イメージ データのインポート] ダイアログ ボックスで、拡張オプションを選択し、検証データを指定できます。詳細については、ディープ ネットワーク デザイナーへのデータのインポートを参照してください。 | |
その他の拡張ワークフロー (数値特徴入力、メモリ外のデータ、イメージ処理、オーディオ処理および音声処理など) | データストア。 その他の拡張ワークフローでは、適切なデータストア オブジェクトを使用してください。たとえば、 関数 | [データのインポート] 、 [データストアのインポート] を選択します。 [データストアのインポート] ダイアログ ボックスで検証データを指定できます。詳細については、ディープ ネットワーク デザイナーへのデータのインポートを参照してください。 | |
ネットワークの学習
ディープ ネットワーク デザイナーを使用して深層ニューラル ネットワークに学習させます。
ディープ ネットワーク デザイナーでは、関数 trainNetwork
で機能するイメージ データまたは任意のデータストア オブジェクトを使用して、ネットワークに学習させることができます。たとえば、CombinedDatastore
オブジェクトを使用して、セマンティック セグメンテーション ネットワークや多入力ネットワークに学習させることができます。ディープ ネットワーク デザイナーへのデータのインポートの詳細については、ディープ ネットワーク デザイナーへのデータのインポートを参照してください。
ディープ ネットワーク デザイナーにインポートしたデータでネットワークに学習させるには、[学習] タブの [学習] をクリックします。このアプリでは、学習の進行状況がアニメーション化されたプロットで表示されます。プロットには、ミニバッチの損失と精度、検証の損失と精度、および学習の進行状況に関する追加情報が表示されます。プロットの右上隅には、停止ボタン があります。そのボタンをクリックすると、学習が停止し、ネットワークの現在の状態が返されます。
詳細については、Train Networks Using Deep Network Designerを参照してください。
学習をさらに細かく制御するには、[学習オプション] をクリックして学習の設定を選択します。学習オプションを選択する方法の詳細については、trainingOptions
を参照してください。
イメージ分類ネットワークの学習方法を示す例については、ディープ ネットワーク デザイナーを使用した転移学習を参照してください。sequence-to-sequence LSTM ネットワークの学習方法を示す例については、ディープ ネットワーク デザイナーを使用して時系列予測をネットワークに学習させるを参照してください。
ディープ ネットワーク デザイナーがサポートしていないデータでネットワークに学習させるには、[デザイナー] タブの [エクスポート] をクリックして、初期状態のネットワーク アーキテクチャをエクスポートします。次に、カスタム学習ループなどのプログラムを使用してネットワークに学習させます。
ネットワークのエクスポートとコードの生成
ディープ ネットワーク デザイナーで作成されたネットワーク アーキテクチャをワークスペースまたは Simulink にエクスポートし、コードを生成してネットワークと学習を再作成します。
初期の重みを含むネットワーク アーキテクチャをワークスペースにエクスポートするには、[デザイナー] タブの [エクスポート] をクリックします。ネットワーク アーキテクチャに応じて、ディープ ネットワーク デザイナーはネットワークを
LayerGraph
lgraph またはLayer
オブジェクト layers としてエクスポートします。ディープ ネットワーク デザイナーで学習させたネットワークをワークスペースにエクスポートするには、[学習] タブの [エクスポート] をクリックします。ディープ ネットワーク デザイナーは、学習済みのネットワーク アーキテクチャを
DAGNetwork
オブジェクト trainedNetwork としてエクスポートします。ディープ ネットワーク デザイナーは、学習や検証精度などの学習の結果も構造体配列 trainInfoStruct としてエクスポートします。ディープ ネットワーク デザイナーで学習させたネットワークを Simulink にエクスポートするには、[学習] タブの [エクスポート] 、 [Simulink にエクスポート] をクリックします。ディープ ネットワーク デザイナーにより、学習済みネットワークが MAT ファイルとして保存され、学習済みネットワークを表す Simulink ブロックが生成されます。生成されるブロックは、学習済みネットワークのタイプによって異なります。
Image Classifier — 学習済み深層学習ニューラル ネットワークを使用してデータを分類します。
Predict — 学習済み深層学習ニューラル ネットワークを使用して応答を予測します。
Stateful Classify — 学習済み再帰型ニューラル ネットワークを使用してデータを分類します。
Stateful Predict — 学習済み再帰型ニューラル ネットワークを使用して応答を予測します。
ディープ ネットワーク デザイナーで構築および学習させるネットワークを再作成するには、MATLAB コードを生成します。
ネットワーク層を再作成するには、[デザイナー] タブの [エクスポート] 、 [コード生成] を選択します。
ネットワーク層 (任意の学習可能パラメーターを含む) を再作成するには、[デザイナー] タブの [エクスポート] 、 [初期パラメーターを使ったコード生成] を選択します。
ネットワーク、データのインポート、および学習を再作成するには、[学習] タブの [エクスポート] 、 [学習用コードの生成] を選択します。
スクリプトを生成した後、次のタスクを実行できます。
そのスクリプトを実行して、アプリで作成されたネットワーク層を再作成する。学習スクリプトを生成した場合、そのスクリプトを実行すると、ネットワークの学習も複製されます。
コードを調べて、プログラムで層の作成と結合を行う方法、および深層ネットワークに学習させる方法を確認する。
コードを編集して、層に変更を加える。スクリプトを実行してから、ネットワークをアプリにインポートし直して編集することもできます。
詳細については、ディープ ネットワーク デザイナーから MATLAB コードを生成を参照してください。
ディープ ネットワーク デザイナーを使用して、ハイパーパラメーター値の範囲のスイープ、またはベイズ最適化の使用による最適な学習オプションの検出を行う深層学習実験を作成することもできます。ディープ ネットワーク デザイナーで学習させたネットワークのハイパーパラメーターを調整するために実験マネージャーを使用する方法を示す例については、Generate Experiment Using Deep Network Designerを参照してください。
関連する例
- ディープ ネットワーク デザイナーを使用した転移学習
- ディープ ネットワーク デザイナーを使用したネットワークの構築
- ディープ ネットワーク デザイナーへのデータのインポート
- Train Networks Using Deep Network Designer
- ディープ ネットワーク デザイナーを使用して時系列予測をネットワークに学習させる
- ディープ ネットワーク デザイナーでの簡単なセマンティック セグメンテーション ネットワークの学習
- ディープ ネットワーク デザイナーでの image-to-image 回帰
- Transfer Learning with Pretrained Audio Networks in Deep Network Designer
- ディープ ネットワーク デザイナーへのカスタム層のインポート
- ディープ ネットワーク デザイナーから MATLAB コードを生成
- Generate Experiment Using Deep Network Designer
- 深層学習層の一覧
プログラムでの使用
deepNetworkDesigner
deepNetworkDesigner
は、ディープ ネットワーク デザイナー アプリを開きます。ディープ ネットワーク デザイナーが既に開いている場合、deepNetworkDesigner
はアプリにフォーカスを移動します。
deepNetworkDesigner(net
)
net
)deepNetworkDesigner(
は、ディープ ネットワーク デザイナー アプリを開き、指定されたネットワークをアプリに読み込みます。系列ネットワーク、DAG ネットワーク、層グラフ、または層の配列をネットワークにできます。net
)
たとえば、事前学習済みの SqueezeNet ネットワークでディープ ネットワーク デザイナーを開きます。
net = squeezenet; deepNetworkDesigner(net);
ディープ ネットワーク デザイナーが既に開いている場合、deepNetworkDesigner(net)
はアプリにフォーカスを移動し、既存のネットワークに追加するか置き換えるかを求めます。
ヒント
複数のネットワークに学習させて結果を比較するには、実験マネージャーを使用してください。ディープ ネットワーク デザイナーを使用して、実験マネージャーに適した実験を作成できます。
バージョン履歴
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)