Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

転移学習用の事前学習済みのネットワークを複数試用

この例では、転移学習のためにさまざまな事前学習済みのネットワークの層を置き換える実験を構成する方法を説明します。目的のタスクに向けてさまざまな事前学習済みのネットワークの性能を比較するには、この実験を編集し、どの事前学習済みのネットワークを使用するかを指定します。実験を実行する前に、googlenet などの関数を使用すると、アドオン エクスプローラーから事前学習済みのネットワークをダウンロードするためのリンクを取得できます。

転移学習は、深層学習アプリケーションでよく使用されています。事前学習済みのネットワークを取得して、新しいタスクの学習の開始点として使用できます。通常は、転移学習によってネットワークを微調整する方が、ランダムに初期化された重みでゼロからネットワークに学習させるよりもはるかに簡単で時間がかかりません。少ない数の学習イメージを使用して、新しいタスクに学習済みの特徴を高速に転移できます。

Deep Learning Toolbox™ には、利用できる事前学習済みのネットワークが多数あります。これらの事前学習済みのネットワークには、問題に適用するネットワークを選択する際に重要になるさまざまな特性があります。最も重要な特性は、ネットワークの精度、速度、およびサイズです。ネットワークの選択には、通常、これらの特性の間のトレードオフが生じます。詳細については、事前学習済みの深層ニューラル ネットワークを参照してください。

実験を開く

まず、例を開きます。実験マネージャーによって、検証と実行が可能な事前構成済みの実験を含むプロジェクトが読み込まれます。実験を開くには、[実験ブラウザー] ペインで、実験の名前 (TransferLearningExperiment) をダブルクリックします。

組み込みの学習実験は、説明、ハイパーパラメーターのテーブル、セットアップ関数、および実験の結果を評価するためのメトリクス関数の集合で構成されます。詳細については、深層学習実験の構成を参照してください。

[説明] フィールドには、実験を説明するテキストが表示されます。この例の説明は次のようになります。

Perform transfer learning by replacing layers in a pretrained network.

[ハイパーパラメーター] セクションでは、実験で使用する手法 (Exhaustive Sweep) とハイパーパラメーター値を指定します。実験を実行すると、実験マネージャーは、ハイパーパラメーター テーブルで指定されたハイパーパラメーター値のすべての組み合わせを使用してネットワークに学習させます。この例では、ハイパーパラメーター NetworkName によって、学習を行うネットワークと学習オプション 'miniBatchSize' の値が指定されます。

[セットアップ関数] は、実験用の学習データ、ネットワーク アーキテクチャ、および学習オプションを構成します。セットアップ関数を検査するには、[セットアップ関数][編集] をクリックします。MATLAB® エディターでセットアップ関数が開きます。

この例のセットアップ関数では以下を行います。

  • 花のデータセット (約 218 MB) のダウンロードと抽出。このデータセットの詳細については、イメージ データセットを参照してください。

  • ハイパーパラメーター NetworkName に対応する事前学習済みのネットワークの読み込み。補助関数 findLayersToReplace は、転移学習用に置き換えるネットワーク アーキテクチャの層を判定します。使用可能な事前学習済みのネットワークの詳細については、事前学習済みの深層ニューラル ネットワークを参照してください。

  • 実験用の trainingOptions オブジェクトの定義。この例では、ネットワークの学習を 10 エポック行います。初期学習率は 0.0003 とし、5 エポックごとにネットワークを検証します。

[メトリクス] セクションは、実験結果を評価するオプションの関数を指定します。この例では、カスタムのメトリクス関数は含まれていません。

実験の実行

実験を実行すると、実験マネージャーはセットアップ関数で定義されたネットワークに 6 回学習させます。試行ごとに、ハイパーパラメーター値の異なる組み合わせが使用されます。既定では、実験マネージャーは一度に 1 つの試行を実行します。Parallel Computing Toolbox™ がある場合は、複数の試行を同時に実行できます。最良の結果を得るには、実験を実行する前に、GPU と同じ数のワーカーで並列プールを起動します。詳細については、実験マネージャーを使用したネットワークの並列学習リリース別の GPU サポート (Parallel Computing Toolbox)を参照してください。

  • 一度に 1 つの実験の試行を実行するには、[実験マネージャー] ツールストリップで [実行] をクリックします。

  • 複数の試行を同時に実行するには、[並列の使用][実行] の順にクリックします。現在の並列プールがない場合、実験マネージャーは既定のクラスター プロファイルを使用して並列プールを起動します。次に、実験マネージャーは、使用可能な並列ワーカーの数に応じて、複数の同時試行を実行します。

結果テーブルに、各試行の精度と損失が表示されます。

実験の実行中に [学習プロット] をクリックすると、学習プロットが表示され、各試行の進行状況を追跡できます。

[混同行列] をクリックし、完了した各試行の検証データの混同行列を表示します。

実験の完了後、列ごとに結果テーブルを並べ替えること、[フィルター] ペインを使用して試行をフィルター処理すること、注釈を追加して観測値を記録することができます。詳細については、実験結果の並べ替えとフィルター処理を参照してください。

各試行の性能をテストするには、試行で使用した学習済みネットワークまたは試行の学習情報をエクスポートします。[実験マネージャー] ツールストリップで、[エクスポート][学習済みネットワーク] を選択するか、[エクスポート][学習情報] を選択します。詳細は、netinfoを参照してください。

実験を閉じる

[実験ブラウザー] ペインでプロジェクトの名前を右クリックし、[プロジェクトを閉じる] を選択します。実験マネージャーによって、プロジェクトに含まれるすべての実験と結果が閉じられます。

参考

アプリ

関数

関連するトピック