このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
この例では、実験マネージャーを使用して分類用の深層学習ネットワークに学習させる方法を説明します。ここでは 2 つのネットワークに学習させて、MathWorks 商品のイメージを 5 つのクラスに分類します。各ネットワークの学習に 3 つのアルゴリズムを使用します。どの場合も、混同行列を使用して、検証イメージのセットの真のクラスと、学習済みネットワークによって予測されたクラスを比較します。イメージ分類用のネットワークの学習の詳細については、新しいイメージを分類するための深層学習ネットワークの学習を参照してください。
まず、例を開きます。実験マネージャーによって、検証と実行が可能な事前構成済みの実験を含むプロジェクトが読み込まれます。実験を開くには、[実験ブラウザー] ペインで、実験の名前 (ClassificationExperiment
) をダブルクリックします。
実験の定義は、説明、ハイパーパラメーターのテーブル、セットアップ関数、および実験の結果を評価するためのメトリクス関数の集合 (オプション) で構成されます。詳細については、深層学習実験の構成を参照してください。
[説明] ボックスには、実験を説明するテキストが表示されます。この例の説明は次のようになります。
Merchandise image classification using: - an untrained network (default) or a pretrained network (googlenet) - various solvers for training networks (sgdm, rmsprop, or adam)
[ハイパーパラメーター] セクションでは、実験で使用する手法 (Exhaustive Sweep
) とハイパーパラメーター値を指定します。実験を実行すると、実験マネージャーは、ハイパーパラメーター テーブルで指定されたハイパーパラメーター値のすべての組み合わせを使用してネットワークに学習させます。この例では、以下の 2 つのハイパーパラメーターを使用します。
Network
は、学習を行うネットワークを指定します。このオプションには、"default"
(セットアップ関数テンプレートによって指定された既定の分類ネットワーク) および "googlenet"
(転移学習用に変更された層をもつ事前学習済みの GoogLeNet ネットワーク) が含まれています。
Solver
は、ネットワークの学習に使用するアルゴリズムを示します。このオプションには、"sgdm"
(モーメンタム項付き確率的勾配降下法)、"rmsprop"
(平方根平均二乗伝播)、および "adam"
(適応モーメント推定) が含まれています。これらのアルゴリズムの詳細については、確率的勾配降下法を参照してください。
[セットアップ関数] は、実験用の学習データ、ネットワーク アーキテクチャ、および学習オプションを構成します。セットアップ関数を検査するには、[セットアップ関数] で [編集] をクリックします。MATLAB® エディターでセットアップ関数が開きます。
この例では、セットアップ関数への入力は、ハイパーパラメーター テーブルのフィールドをもつ struct
です。このセットアップ関数は、イメージ分類問題用のネットワークに学習させるために使用する 3 つの出力を返します。このセットアップ関数には 3 つのセクションがあります。
イメージ データの読み込みでは、学習データと検証データを含むイメージ データストアを定義します。この例では、MerchData.zip
ファイルからイメージを読み込みます。これは、5 つの異なるクラスに属する 75 個の MathWorks 商品のイメージを含む小さなデータセットです。イメージのサイズは 227 x 227 x 3 です。このデータセットの詳細については、イメージ データセットを参照してください。
ネットワーク アーキテクチャの定義では、深層学習による分類用の畳み込みニューラル ネットワークのアーキテクチャを定義します。この例では、学習を行うネットワークの選択は、ハイパーパラメーター Network
の値によって異なります。
学習オプションの指定では、実験用の
オブジェクトを定義します。この例では、ハイパーパラメーター テーブルの trainingOptions
Solver
エントリで指定されるアルゴリズムを使用して、ネットワークの学習を 10 エポック行います。
[メトリクス] セクションは、実験結果を評価するオプションの関数を指定します。この例では、カスタムのメトリクス関数は含まれていません。
実験を実行すると、実験マネージャーはセットアップ関数で定義されたネットワークに 6 回学習させます。試行ごとに、ハイパーパラメーター値の異なる組み合わせが使用されます。既定では、実験マネージャーは一度に 1 つの試行を実行します。Parallel Computing Toolbox™ がある場合は、複数の試行を同時に実行できます。最良の結果を得るには、実験を実行する前に、GPU と同じ数のワーカーで並列プールを起動します。詳細については、実験マネージャーを使用したネットワークの並列学習を参照してください。
一度に 1 つの実験の試行を実行するには、[実験マネージャー] ツールストリップで [実行] をクリックします。
複数の試行を同時に実行するには、[並列の使用]、[実行] の順にクリックします。現在の並列プールがない場合、実験マネージャーは既定のクラスター プロファイルを使用して並列プールを起動します。次に、実験マネージャーは、使用可能な並列ワーカーの数に応じて、複数の同時試行を実行します。
結果テーブルに、各試行の精度と損失が表示されます。
実験の実行中に [学習プロット] をクリックすると、学習プロットが表示され、各試行の進行状況を追跡できます。
実験で得られた最良の結果を見つけるには、検証精度の順に結果テーブルを並べ替えます。
[検証精度] 列をポイントします。
三角形のアイコンをクリックします。
[降順に並べ替え] を選択します。
検証精度の最も高い試行が、結果テーブルの 1 番上に表示されます。
この試行の混同行列を表示するには、結果テーブルで先頭の行を選択し、[混同行列] をクリックします。
[実験ブラウザー] ペインでプロジェクトの名前を右クリックし、[プロジェクトを閉じる] を選択します。実験マネージャーによって、プロジェクトに含まれるすべての実験と結果が閉じられます。
googlenet
| resnet18
| trainingOptions
| trainNetwork
| 実験マネージャー