拡張イメージデータを使用して,畳み込みニューラルネットワークに学習させます。データ拡張は,ネットワークで過適合が発生したり,学習イメージの正確な詳細が記憶されたりすることを防止するのに役立ちます。
標本データを読み込みます。標本データは,手書き数字の合成イメージで構成されています。
digitTrain4DArrayData
は,数字の学習セットを4次元配列データとして読み込みます。XTrain
は28 28 x 5000 xの配列です。
28はイメージの高さと幅。
1はチャネルの数。
5000年は手書き数字の合成イメージの数。
YTrain
は,各観測値のラベルが含まれる直言ベクトルです。
ネットワークの検証用に1000個のイメージを残しておきます。
サイズ変更,回転,平行移動,反転など,イメージ拡張の前処理オプションを指定するimageDataAugmenter
オブジェクトを作成します。イメージを,水平方向および垂直方向に最大3ピクセルまでのランダムな平行移動をさせたり,最大20度までの回転をさせたりします。
imageAugmenter = imageDataAugmenter with properties: 0 RandXReflection: 0 RandYReflection: 0 RandRotation: [-20 20] RandScale: [1 1] RandXScale: [1 1] RandYScale: [1 1] RandXShear: [0 0] RandYShear: [0 0] RandXTranslation: [-3 3] RandYTranslation: [-3 3]
ネットワーク学習に使用するaugmentedImageDatastore
オブジェクトを作成し,イメージ出力サイズを指定します。学習中,データストアはイメージ拡張の実行とイメージのサイズ変更を行います。データストアは,イメージをメモリに保存せずに拡張します。trainNetwork
は,ネットワークパラメーターを更新した後,その拡張イメージを破棄します。
畳み込みニューラルネットワークアーキテクチャを指定します。
モーメンタム項付き確率的勾配降下法の学習オプションを指定します。
ネットワークに学習をさせます。検証イメージは拡張されないため,検証精度が学習精度より高くなります。