ディープ ネットワーク デザイナーを使用したシンプルなイメージ分類ネットワークの作成
この例では、ディープ ネットワーク デザイナーを使用して深層学習による分類用のシンプルな畳み込みニューラル ネットワークを作成し、学習を行う方法を説明します。畳み込みニューラル ネットワークは深層学習に不可欠なツールであり、特にイメージの認識に適しています。
この例では、次の作業を行います。
イメージ データのインポート。
ネットワーク アーキテクチャの定義。
学習オプションの指定。
ネットワークに学習をさせます。
データの読み込み
数字の標本データをイメージ データストアとして読み込みます。関数 imageDatastore
は、フォルダー名に基づいてイメージに自動的にラベルを付けます。データ セットには 10 個のクラスがあり、データ セット内の各イメージは 28 x 28 x 1 ピクセルです。
digitDatasetPath = fullfile(matlabroot,'toolbox','nnet','nndemos', ... 'nndatasets','DigitDataset'); imds = imageDatastore(digitDatasetPath, ... 'IncludeSubfolders',true, ... 'LabelSource','foldernames');
ディープ ネットワーク デザイナーを開きます。ディープ ネットワーク デザイナーを使用して、ネットワークを作成し、データをインポートして可視化し、ネットワークに学習させます。
deepNetworkDesigner
空のネットワークを作成するには、[空のネットワーク] で一時停止し、[新規] をクリックします。
イメージ データストアをインポートするには、[データ] タブを選択し、[データのインポート]、[イメージ分類データのインポート] をクリックします。データ ソースとして imds
を選択します。検証データとして使用するために、学習データの 30% を残しておきます。[ランダム化] を選択して、観測値を学習セットと検証セットにランダムに割り当てます。
[インポート] をクリックしてデータをインポートします。
ネットワーク アーキテクチャの定義
[デザイナー] ペインで、畳み込みニューラル ネットワーク アーキテクチャを定義します。[層のライブラリ] から層をドラッグして結合します。層をすばやく検索するには、[層のライブラリ] ペインの [層のフィルター] 検索ボックスを使用します。層のプロパティを編集するには、層をクリックして、[プロパティ] ペインで値を編集します。
次の順序で層を結合します。
imageInputLayer
(InputSize
プロパティを28,28,1
に設定)convolution2dLayer
batchNormalizationLayer
reluLayer
fullyConnectedLayer
(OutputSize
プロパティを10
に設定)softmaxLayer
classificationLayer
深層学習層の詳細は、深層学習層の一覧を参照してください。
ネットワークの学習
学習オプションを指定し、ネットワークに学習させます。
[学習] タブで、[学習オプション] をクリックします。この例では、エポックの最大数を 5 に設定し、他の既定の設定はそのままにします。[OK] をクリックして学習オプションを設定します。学習オプションの詳細は、パラメーターの設定と畳み込みニューラル ネットワークの学習を参照してください。
[学習] をクリックしてネットワークに学習させます。
精度は、ネットワークが正しく予測するラベルの割合です。この場合、97% を超える予測ラベルが検証セット内の真のラベルに一致しています。
学習済みのネットワークをワークスペースにエクスポートするには、[学習] タブの [エクスポート] をクリックします。
深層学習の次のステップとして、事前学習済みのネットワークを他のタスクに使用してみることができます。転移学習を使用して、自分のイメージ データで新しい分類問題を解決してみましょう。例については、転移学習入門を参照してください。事前学習済みのネットワークの詳細は、事前学習済みの深層ニューラル ネットワークを参照してください。
参考
trainingOptions
| ディープ ネットワーク デザイナー