Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

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

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

説明

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

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

  • ネットワークをインポートして編集し、新しいネットワークを構築する。

  • 新しい層をドラッグ アンド ドロップして追加し、新しい結合を作成する。

  • 層のプロパティを表示および編集する。

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

  • 分類問題用のイメージ データをインポートし、拡張オプションを選択する。

  • イメージ分類タスクのためネットワークに学習させる。

  • 精度、損失、検証メトリクスをプロットして学習を監視する。

  • ネットワークの構築と学習を行う MATLAB® コードを生成する。

ネットワークの設計が終了したら、ネットワークの保存や学習が可能なワークスペースにエクスポートできます。イメージ分類問題では、ディープ ネットワーク デザイナーを使用してネットワークの学習を行うこともできます。学習済みのネットワークと結果はワークスペースにエクスポートできます。

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

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

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

すべて展開する

ディープ ネットワーク デザイナー アプリでシンプルな事前学習済みのネットワークを確認します。

アプリを開き、事前学習済みのネットワークを選択します。[デザイナー] タブを選択し、[新規] をクリックして事前学習済みのネットワークを読み込むこともできます。ネットワークをダウンロードする必要がある場合、[インストール] をクリックして、アドオン エクスプローラーへのリンクを開きます。

ヒント

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

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

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

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

データをアプリにインポートするには、[データ] タブの [データのインポート] をクリックします。

各クラスのイメージが格納されたサブフォルダーを含むフォルダー、または、ワークスペース内の imageDatastore からデータをインポートできます。

ディープ ネットワーク デザイナーには、さまざまなイメージ拡張オプションが用意されています。ランダム化された "拡張" をデータに適用して、実質的に学習データの量を増やすことができます。データの拡張を選択した場合、ディープ ネットワーク デザイナーによって各エポックの学習データにランダムな摂動が与えられます。そのため、各エポックで使用されるデータセットはわずかに異なります。

ディープ ネットワーク デザイナーには以下の拡張オプションが用意されています。

  • X 軸方向のランダムな反転

  • Y 軸方向のランダムな反転

  • ランダムな回転

  • ランダムな再スケーリング

  • ランダムな水平方向の平行移動

  • ランダムな垂直方向の平行移動

メモ

データセットによっては拡張が適さない場合があるため、既定では、ディープ ネットワーク デザイナーはデータを拡張しません。詳細は、ランダムな幾何学的変換での学習用のイメージの拡張を参照してください。

フォルダーを選択するか、ワークスペースから imageDatastore をインポートして、検証データをインポートします。学習データから検証データを分割することもできます。検証データは、パフォーマンスの監視や過適合の防止に役立ちます。

学習データの場所を選択したら、検証データを指定し、拡張オプションをすべて設定し、[インポート] をクリックしてデータセットをインポートします。

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

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

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

deepNetworkDesigner

ディープ ネットワーク デザイナーのスタートページで、事前学習済みのネットワークを選択して読み込みます。事前学習済みネットワークの一覧から [SqueezeNet] を選択します。[開く] をクリックしてネットワークを読み込みます。

転移学習用のネットワークを準備するために、最後の学習可能な層と最終分類層を置き換えます。

  • 最後の学習可能な層が 2 次元畳み込み層 (たとえば SqueezeNet の 'conv10' 層) の場合、次のようにします。

    • 新しい convolutional2dLayer をキャンバスにドラッグします。NumFilters プロパティを新しいクラス数に設定し、FilterSize1,1 に設定します。

    • 最後の convolutional2dLayer を削除し、代わりに新しい層を結合します。

  • 最後の学習可能な層が全結合層 (GoogLeNet など、大半の事前学習済みネットワーク) の場合、次のようにします。

    • 新しい fullyConnectedLayer をキャンバスにドラッグし、OutputSize プロパティを新しいクラス数に設定します。

    • 最後の fullyConnectedLayer を削除し、代わりに新しい層を結合します。

次に、分類出力層を削除します。次に、新しい classificationLayer をキャンバスにドラッグして代わりに結合します。出力層が既定の設定の場合、出力層は学習中にクラス数を学習することになります。

ネットワークの学習の準備が整っていることを確認するには、[デザイナー] タブの [解析] をクリックします。

ネットワークに学習させるには、[学習] タブを選択します。詳細については、ディープ ネットワーク デザイナーを使用した転移学習を参照してください。

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

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

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

ディープ ネットワーク デザイナーで、イメージ分類ネットワークの学習を行います。

ディープ ネットワーク デザイナーにインポートしたイメージ データでネットワークに学習させるには、[学習] タブの [学習] をクリックします。学習をさらに細かく制御するには、[学習オプション] をクリックして学習の設定を選択します。学習オプションを選択する方法の詳細については、trainingOptionsを参照してください。

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

その他のタイプのデータでネットワークに学習させるには、[デザイナー] タブを選択して [エクスポート] をクリックし、初期のネットワーク アーキテクチャをエクスポートします。その後、プログラムを使用してネットワークに学習させることができます。簡単な例については、ディープ ネットワーク デザイナーを使用したシンプルなシーケンス分類ネットワークの作成を参照してください。

ディープ ネットワーク デザイナーで作成されたネットワーク アーキテクチャをワークスペースにエクスポートします。

  • 初期の重みを含むネットワーク アーキテクチャをエクスポートするには、[デザイナー] タブの [エクスポート] をクリックします。

  • 学習した重みを含むネットワーク アーキテクチャをエクスポートするには、[学習] タブの [エクスポート] をクリックします。

ディープ ネットワーク デザイナー アプリで作成したネットワーク層を再作成するために、MATLAB コードを生成します。

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

または、[エクスポート][初期パラメーターを使ったコード生成] を選択して、学習可能なパラメーターを含むネットワークを再作成できます。

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

  • そのスクリプトを実行して、アプリで作成されたネットワーク層を再作成する。

  • ネットワークに学習させるために、スクリプトを実行し、層を関数 trainNetwork に指定する。

  • コードを調べて、プログラムで層を作成および結合する方法を確認する。

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

詳細は、ネットワーク層を再作成する MATLAB コードの生成 を参照してください。

ディープ ネットワーク デザイナー アプリで実行するデータのインポートと学習を再作成するには、MATLAB コードを生成します。

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

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

  • スクリプトを実行して、アプリで実行するネットワーク層と学習を再作成する。

  • コードを調べて、プログラムによってデータをインポートする方法を確認し、ネットワークを構築して学習を行う。

  • コードを変更して、さまざまなネットワーク アーキテクチャと学習オプションを試し、結果にどのように影響するか確認する。

詳細は、ネットワークに学習させる MATLAB コードの生成 を参照してください。

関連する例

ヒント

複数のネットワークに学習させて結果を比較するには、実験マネージャーを使用してください。

R2018b で導入