Main Content

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

転移学習用の重み初期化子を使用した実験

この例では、学習用のさまざまな重み初期化子を使用して畳み込み層と全結合層の重みを初期化する実験を構成する方法を説明します。目的のタスクに向けてさまざまな重み初期化子の性能を比較するには、この例を参考にして実験を作成してください。

深層学習ネットワークに学習させる際、層の重みとバイアスの初期化は、ネットワークの学習成果に大きな影響を与える可能性があります。バッチ正規化層をもたないネットワークの場合、初期化子の選択はさらに大きな影響を与えます。重み初期化子の詳細については、層の重み初期化子の比較を参照してください。

実験を開く

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

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

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

Perform transfer learning by initializing the weights of convolution and
fully connected layers in a pretrained network.

[ハイパーパラメーター] セクションでは、実験で使用する手法 (Exhaustive Sweep) とハイパーパラメーター値を指定します。実験を実行すると、実験マネージャーは、ハイパーパラメーター テーブルで指定されたハイパーパラメーター値のすべての組み合わせを使用してネットワークに学習させます。この例では、ハイパーパラメーター WeightsInitializer および BiasInitializer を使用し、事前学習済みのネットワークにおける畳み込み層および全結合層の重み初期化子とバイアス初期化子を指定します。これらの初期化子の詳細については、WeightsInitializerおよびBiasInitializerを参照してください。

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

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

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

  • 事前学習済みの GoogLeNet ネットワークの読み込み、および畳み込み層と全結合層における入力の重みの初期化。これには、ハイパーパラメーター テーブルで指定された初期化子が使用されます。補助関数 findLayersToReplace は、ネットワーク アーキテクチャのどの層を転移学習用に変更できるかを判定します。

  • 実験用の trainingOptions オブジェクトの定義。この例では、ネットワークの学習を 10 エポック行います。ミニバッチ サイズは 128 とし、5 エポックごとにネットワークを検証します。

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

実験の実行

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

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

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

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

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

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

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

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

実験を閉じる

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

参考

アプリ

関数

関連するトピック