MATLAB Answers

gt
0

GoogleNetの​accuracyを改​善する方法につきまし​て

Asked by gt
on 20 Feb 2019
Latest activity Commented on by gt
on 20 Feb 2019
プログラミング初心者です。
以下のリンクをもとにgooglenetでDICOM ファイルのclassificationを行いました
以下のコードを削除したり、optionでmaxepochの数やmini-batch sizeを調整しているのですが、なかなかaccuracyは上がらず55%です。
pixelRange = [-30 30];
scaleRange = [0.9 1.1];
imageAugmenter = imageDataAugmenter( ...
'RandXReflection',true, ...
'RandXTranslation',pixelRange, ...
'RandYTranslation',pixelRange, ...
'RandXScale',scaleRange, ...
'RandYScale',scaleRange);
augimdsTrain = augmentedImageDatastore(inputSize(1:2),imdsTrain, ...
'DataAugmentation',imageAugmenter);
alexnetでは90%近いaccuracyを出せているので、googlenetではなぜこういった問題が生じているかご存じでしたらご教示頂けますと幸いです。

  0 Comments

Sign in to comment.

1 Answer

Answer by Kenta Itakura on 20 Feb 2019
 Accepted Answer

maxepochやminibatchsizeのほかに、初期学習率や、モーメンタム、L2正則、learnratedropfactorなどがあります。
初期学習率やモーメンタムは変更されましたか?
また、学習曲線はどのようになっていますでしょうか?変更可能なパラメータがたくさんあって、迷ってしまいますが、学習曲線があれば、少し見当がつけられるかもしれません。
またalexnetで90%ほどの精度なのであれば、もしかしたら、うまく走っていないのかもしれません。
(実はファイルのなかでカテゴリが混在している、など)それか、カテゴリ間で画像枚数にかたよりがあれば、精度がさがることもあります。
ただ、私の経験では、alexnet, googlenetの精度はそこまで大きく変わらないような気もするのですが、もしかしたらネットワークやそのデフォルトの値で大きく変わるのかもしれません。
また、計算に少し時間はかかりますが、ベイズ的最適化でパラメータを決定するのも良いと思います。googlenetのファイルを関数として、ベイズ的最適化のコードに組み込めば、自動的にパラメータをしぼりこんでくれます。
https://jp.mathworks.com/help/deeplearning/examples/deep-learning-using-bayesian-optimization.html

  9 Comments

gt
on 20 Feb 2019
スクリーンショット 2019-02-21 06.51.44.png
試しに50枚でやってみたのですが横ばいが続ききちんと学習できているとはいいがたいですね。。 dataaugmentationも含めて試してみます。
Kenta Itakura on 20 Feb 2019
そうですか...報告ありがとうございます。
alexnetでうまくいったのなら、そちらに絞ってみてはどうでしょう。いろんな意味での、そのデータに対するネットワークの向き不向きもあると思いますので。
gt
on 20 Feb 2019
はい! ご丁寧にありがとうございました!

Sign in to comment.