Main Content

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

深層学習ネットワークの設計、可視化、および学習

説明

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

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

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

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

  • ネットワークを解析してネットワーク アーキテクチャの定義が正しいことを確認し、学習の前に問題を検出する。

  • 学習および検証のためのデータストアをインポートおよび可視化する。

  • イメージ分類学習データへ拡張を適用し、クラス ラベルの分布を可視化する。

  • ネットワークに学習させ、精度、損失、検証メトリクスのプロットを使用した学習を監視する。

  • 学習済みネットワークをワークスペースまたは Simulink® にエクスポートする。

  • ネットワークの構築と学習を行う MATLAB® コードを生成し、実験マネージャーを使用してハイパーパラメーター調整のための実験を作成する。

Deep Network Designer app

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

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

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

すべて展開する

ディープ ネットワーク デザイナーで事前学習済みのネットワークを調べます。

アプリを開き、事前学習済みのネットワークを選択します。[デザイナー] タブを選択し、[新規] をクリックして事前学習済みのネットワークを読み込むこともできます。ネットワークをダウンロードする必要がある場合は、[インストール] をクリックしてアドオン エクスプローラーを開きます。ディープ ネットワーク デザイナーには、イメージ タスクやオーディオ タスクに適した事前学習済みのネットワークが用意されています。事前学習済みのオーディオ ネットワークを読み込むには、Audio Toolbox™ が必要です。

ヒント

はじめに、SqueezeNet や GoogLeNet などのより高速なイメージ分類ネットワークの 1 つを選択してみてください。どの設定が適切に機能するかを理解したら、Inception-v3 や ResNet などのより正確なネットワークを試し、結果が改善されるか確認します。事前学習済みのネットワークの選択の詳細については、事前学習済みの深層ニューラル ネットワークを参照してください。

Deep Network Designer start page showing available networks

[デザイナー] ペインでは、ネットワークを可視化して確認します。使用可能な事前学習済みイメージ分類ネットワークの一覧、およびそれらを比較する方法については、事前学習済みの深層ニューラル ネットワークを参照してください。

Deep Network Designer displaying a pretrained image classification network

ディープ ネットワーク デザイナーによるネットワーク構築の詳細については、ディープ ネットワーク デザイナーを使用したネットワークの構築を参照してください。

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

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

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

deepNetworkDesigner(squeezenet)

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

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

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

Convolution 2-D layer selected in Deep Network Designer. The Properties pane shows NumFilters set to 5.

ヒント

大半の事前学習済みネットワーク (GoogLeNet など) では、最後の学習可能な層は全結合層です。転移学習用にネットワークを準備するには、全結合層を選択し、[OutputSize] プロパティを新しいクラス数に設定します。例については、ディープ ネットワーク デザイナー入門を参照してください。

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

次に、分類出力層を編集します。[プロパティ] ペインで、[層のロックを解除] をクリックしてから、[ロックの強制解除] をクリックします。出力層が既定の設定の場合、ネットワークは学習中にクラス数を学習することになります。

Classification layer selected in Deep Network Designer. The Properties pane shows OutputSize set to auto.

[デザイナー] タブの [解析] をクリックして、ネットワークを確認してください。[深層学習ネットワーク アナライザー] によってエラー 0 が報告されていれば、ネットワークの学習の準備は整っています。新しいイメージを分類するためにネットワークに学習させる方法を示す例については、ディープ ネットワーク デザイナーを使用した転移学習を参照してください。

PyTorch または TensorFlow からニューラル ネットワークをインポートします。

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

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

  • TensorFlow の場合、[TensorFlow から] アイコンで [インポート] をクリックします。[ネットワークのインポート] ダイアログ ボックスで、モデル フォルダーの場所を選択します。

ネットワークの場所を選択したら、[インポート] をクリックします。

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

Example of an import report. The report displays a warning about the input layer and an error about placeholder layers.

PyTorch または TensorFlow からインポートしたネットワークの場合、このアプリでデータのインポートや学習を行うことはできません。

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

層のプロパティについて理解し編集するためのヘルプを表示するには、層の名前の横にあるヘルプ アイコンをクリックしてください。

[デザイナー] ペインで層を選択し、プロパティを表示して編集します。層のプロパティに関する詳細情報については、層の名前の横にあるヘルプ アイコンをクリックしてください。

Cross channel normalization layer selected in Deep Network Designer

層のプロパティの詳細については、深層学習層の一覧を参照してください。

ディープ ネットワーク デザイナーでワークスペースからネットワークに層を追加します。

ディープ ネットワーク デザイナーでは、組み込み層を [層のライブラリ] から [デザイナー] ペインにドラッグして結合することでネットワークを構築できます。[デザイナー] ペインで、ワークスペースからネットワークにカスタム層を追加することもできます。変数 myCustomLayer にカスタム層が格納されているとします。

  1. [デザイナー] タブの [新規] をクリックします。

  2. [ワークスペースから] で一時停止し、[インポート] をクリックします。

  3. myCustomLayer を選択し、[OK] をクリックします。

  4. [追加] をクリックします。

アプリによって [デザイナー] ペインの上部にカスタム層が追加されます。新しい層を表示するには、マウスを使用してズームインするか、[ズームイン] をクリックします。

[デザイナー] ペインで [myCustomLayer] をネットワークに結合します。ディープ ネットワーク デザイナーでカスタム層を使ってネットワークを構築する方法を示す例については、ディープ ネットワーク デザイナーへのカスタム層のインポートを参照してください。

ディープ ネットワーク デザイナーでネットワークを結合することもできます。たとえば、事前学習済みのネットワークと復号化器のサブネットワークを組み合わせて、セマンティック セグメンテーション ネットワークを作成できます。

カスタム層クラス定義を表示または編集するには、層を選択し、[層のコードの編集] をクリックします。詳細については、View Autogenerated Custom Layers Using Deep Network Designerを参照してください。 (R2023a 以降)

学習用のデータをディープ ネットワーク デザイナーにインポートします。

ディープ ネットワーク デザイナーの [データ] タブを使用して、学習データおよび検証データをインポートできます。ディープ ネットワーク デザイナーは、イメージ データおよびデータストア オブジェクトのインポートをサポートしています。タスクのタイプに基づいてインポート方法を選択します。

タスクデータ型データのインポート方法可視化の例
イメージ分類

ImageDatastore オブジェクト、または各クラスのイメージが格納されたサブフォルダーのあるフォルダー。クラス ラベルは、サブフォルダー名から取得されます。

[データのインポート][イメージ分類データのインポート] を選択します。

Import Image Data dialog box

[イメージ データのインポート] ダイアログ ボックスで、拡張オプションを選択し、検証データを指定できます。詳細については、ディープ ネットワーク デザイナーへのデータのインポートを参照してください。

Data tab of Deep Network Designer displaying a histogram of the class labels and a selection of random images from the imported data

その他の拡張ワークフロー (数値特徴入力、メモリ外のデータ、イメージ処理、オーディオ処理および音声処理など)

データストア。

その他の拡張ワークフローでは、適切なデータストア オブジェクトを使用してください。たとえば、AugmentedImageDatastoreCombinedDatastorepixelLabelImageDatastore (Computer Vision Toolbox)audioDatastore (Audio Toolbox)、またはカスタム データストアです。

関数 trainNetwork で機能する任意のデータストア オブジェクトをインポートして学習させることができます。深層学習アプリケーション用のデータストア オブジェクトの構築と使用の詳細については、深層学習用のデータストアを参照してください。

[データのインポート][カスタム データのインポート] を選択します。

Import Datastore dialog box

[カスタム データのインポート] ダイアログ ボックスで検証データを指定できます。詳細については、ディープ ネットワーク デザイナーへのデータのインポートを参照してください。

Data tab of Deep Network Designer displaying a preview of the first five observations in the datastore

ディープ ネットワーク デザイナーを使用して深層ニューラル ネットワークに学習させます。

ディープ ネットワーク デザイナーでは、関数 trainNetwork で機能するイメージ データまたは任意のデータストア オブジェクトを使用して、ネットワークに学習させることができます。たとえば、CombinedDatastore オブジェクトを使用して、セマンティック セグメンテーション ネットワークや多入力ネットワークに学習させることができます。ディープ ネットワーク デザイナーへのデータのインポートの詳細については、ディープ ネットワーク デザイナーへのデータのインポートを参照してください。

ディープ ネットワーク デザイナーにインポートしたデータでネットワークに学習させるには、[学習] タブの [学習] をクリックします。このアプリでは、学習の進行状況がアニメーション化されたプロットで表示されます。プロットには、ミニバッチの損失と精度、検証の損失と精度、および学習の進行状況に関する追加情報が表示されます。プロットの右上隅には、停止ボタン があります。そのボタンをクリックすると、学習が停止し、ネットワークの現在の状態が返されます。

Training progress plot in Deep Network Designer

詳細については、ディープ ネットワーク デザイナーを使用したネットワークの学習を参照してください。

学習をさらに細かく制御するには、[学習オプション] をクリックして学習の設定を選択します。学習オプションを選択する方法の詳細については、trainingOptions を参照してください。

Training Options dialog box in Deep Network Designer

イメージ分類ネットワークの学習方法を示す例については、ディープ ネットワーク デザイナーを使用した転移学習を参照してください。sequence-to-sequence LSTM ネットワークの学習方法を示す例については、ディープ ネットワーク デザイナーを使用して時系列予測をネットワークに学習させるを参照してください。

ディープ ネットワーク デザイナーがサポートしていないデータでネットワークに学習させるには、[デザイナー] タブの [エクスポート] をクリックして、初期状態のネットワーク アーキテクチャをエクスポートします。次に、カスタム学習ループなどのプログラムを使用してネットワークに学習させます。

ディープ ネットワーク デザイナーで作成されたネットワーク アーキテクチャをワークスペースまたは Simulink にエクスポートし、コードを生成してネットワークと学習を再作成します。

  • 初期の重みを含むネットワーク アーキテクチャをワークスペースにエクスポートするには、[デザイナー] タブの [エクスポート] をクリックします。ネットワーク アーキテクチャに応じて、ディープ ネットワーク デザイナーはネットワークを LayerGraph lgraph または Layer オブジェクト layers としてエクスポートします。

  • ディープ ネットワーク デザイナーで学習させたネットワークをワークスペースにエクスポートするには、[学習] タブの [エクスポート] をクリックします。ディープ ネットワーク デザイナーは、学習済みのネットワーク アーキテクチャを DAGNetwork オブジェクト trainedNetwork としてエクスポートします。ディープ ネットワーク デザイナーは、学習や検証精度などの学習の結果も構造体配列 trainInfoStruct としてエクスポートします。

  • ディープ ネットワーク デザイナーで学習させたネットワークを Simulink にエクスポートするには、[学習] タブの [エクスポート][Simulink にエクスポート] をクリックします。ディープ ネットワーク デザイナーにより、学習済みネットワークが MAT ファイルとして保存され、学習済みネットワークを表す Simulink ブロックが生成されます。生成されるブロックは、学習済みネットワークのタイプによって異なります。

    • Image Classifier — 学習済み深層学習ニューラル ネットワークを使用してデータを分類します。

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

    • Stateful Classify — 学習済み再帰型ニューラル ネットワークを使用してデータを分類します。

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

ディープ ネットワーク デザイナーから Simulink にネットワークをエクスポートする方法を示す例については、Export Image Classification Network from Deep Network Designer to Simulinkを参照してください。

ディープ ネットワーク デザイナーで構築および学習させるネットワークを再作成するには、MATLAB コードを生成します。

  • 学習可能なパラメーターも含めてネットワーク層を再作成するには、[デザイナー] タブの [エクスポート][パラメーターを含めてネットワーク コードを生成] を選択します。

  • ネットワーク層のみを再作成するには、[デザイナー] タブの [エクスポート][パラメーターなしでネットワーク コードを生成] を選択します。

  • ネットワーク、データのインポート、および学習を再作成するには、[学習] タブの [エクスポート][学習用コードの生成] を選択します。

スクリプトを生成した後、次のタスクを実行できます。

  • そのスクリプトを実行して、アプリで作成されたネットワーク層を再作成する。学習スクリプトを生成した場合、そのスクリプトを実行すると、ネットワークの学習も複製されます。

  • コードを調べて、プログラムで層の作成と結合を行う方法、および深層ネットワークに学習させる方法を確認する。

  • コードを編集して、層に変更を加える。スクリプトを実行してから、ネットワークをアプリにインポートし直して編集することもできます。

詳細については、ディープ ネットワーク デザイナーから MATLAB コードを生成を参照してください。

ディープ ネットワーク デザイナーを使用して、ハイパーパラメーター値の範囲のスイープ、またはベイズ最適化の使用による最適な学習オプションの検出を行う深層学習実験を作成することもできます。ディープ ネットワーク デザイナーで学習させたネットワークのハイパーパラメーターを調整するために実験マネージャーを使用する方法を示す例については、Generate Experiment Using Deep Network Designerを参照してください。

関連する例

プログラムでの使用

すべて展開する

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

deepNetworkDesigner(net) は、ディープ ネットワーク デザイナー アプリを開き、指定されたネットワークをアプリに読み込みます。系列ネットワーク、DAG ネットワーク、層グラフ、層の配列、または dlnetwork オブジェクトをネットワークにできます。dlnetwork オブジェクトの場合、このアプリでデータのインポートや学習を行うことはできません。

たとえば、事前学習済みの SqueezeNet ネットワークでディープ ネットワーク デザイナーを開きます。

net = squeezenet;
deepNetworkDesigner(net);

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

ヒント

複数のネットワークに学習させて結果を比較するには、実験マネージャーを使用してください。ディープ ネットワーク デザイナーを使用して、実験マネージャーに適した実験を作成できます。

バージョン履歴

R2018b で導入