cnn学習データにおける最終検証精度について
7 views (last 30 days)
Show older comments
cnn学習において最終エポックに達した際に検証精度が下がる現象に困っています。
いろいろパラメータを変えたり、学習データと検証データの比率を変えるなどしましたが直接的な原因がわかりません。
こういった現象の対策法等ございますでしょうか?
layers=[
imageInputLayer([1 1501]);
%layer1
convolution2dLayer([1 256],30,'stride',1);
batchNormalizationLayer
reluLayer();
dropoutLayer
maxPooling2dLayer([1 3],'stride',1);
%layer2
convolution2dLayer([1 64],30,'stride',1);
batchNormalizationLayer
reluLayer();
dropoutLayer
maxPooling2dLayer([1 3],'stride',1);
%layer3
convolution2dLayer([1 64],30,'stride',1);
batchNormalizationLayer
reluLayer();
dropoutLayer
maxPooling2dLayer([1 3],'stride',1);
%layer4
convolution2dLayer([1 32],50,'stride',1);
batchNormalizationLayer
reluLayer();
dropoutLayer
maxPooling2dLayer([1 3],'stride',1);
%layer5
convolution2dLayer([1 25],50,'stride',1);
batchNormalizationLayer
reluLayer();
dropoutLayer
maxPooling2dLayer([1 3],'stride',1);
fullyConnectedLayer(100);
dropoutLayer
fullyConnectedLayer(50);
fullyConnectedLayer(4);
softmaxLayer();
classificationLayer();
];
%データ読み込み
wavedata = imageDatastore('学習データ','Readfcn',@fftreadDatastorezeroCSV,'IncludeSubfolders',true,'LabelSource','foldernames','FileExtensions','.csv');
%ラベルつける
drilllabel = wavedata.Labels;
%検証データ指定
drillvalidation = imageDatastore('検証データ','Readfcn',@fftreadDatastorezeroCSV,'IncludeSubfolders',true,'LabelSource','foldernames','FileExtensions','.csv');
drilllabel = drillvalidation.Labels;
% %訓練、テストデータ分割
[drilltrain,drilltest] = splitEachLabel(wavedata,0.94444,'randomized');
%学習の設定
options = trainingOptions('adam','ExecutionEnvironment','multi-gpu','LearnRateSchedule','piecewise','LearnRateDropPeriod',10,'LearnRateDropFactor',0.5,'MaxEpochs',70,'MiniBatchSize',512, 'ValidationData',drillvalidation,'ValidationPatience',inf,'VerboseFrequency',50,'Plots','training-progress');
%学習の実行
tic
[drillnet,info] = trainNetwork(drilltrain, layers, options);
%drillnetが学習モデルとして格納
toc
.png)
Accepted Answer
Kenta
on 20 Aug 2019
はい、解決してよかったです。このような、最終の検証でのジャンプに対しては、バッチ正則化層やドロップアウト層を除けば解決することが多いようですね。
最終の検証は検証データ全体に対する推定精度で、学習曲線のプロットはバッチごとの検証のようで、その差がこのジャンプを生んでいたのかもしれません。
0 Comments
More Answers (0)
See Also
Categories
Find more on イメージを使用した深層学習 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!