フィルターのクリア

分類器のvalidation accuracyはなぜ毎回異なるのか

13 ビュー (過去 30 日間)
ssk
ssk 2019 年 2 月 6 日
コメント済み: Tohru Kikawada 2019 年 2 月 8 日
プログラミング初心者です。
下記リンクを参考にコンパイルしてみたところ、varidation accuracyが毎回コンパイル毎に異なります。
CNNに再現性はないのかなと不安になっておりますので、ご教示いただけますと幸いです。

採用された回答

Shunichi Kusano
Shunichi Kusano 2019 年 2 月 7 日
編集済み: Shunichi Kusano 2019 年 2 月 7 日
精度が毎回変わるのは、学習用のデータと検証用のデータが毎回ランダムに変わるためだと思います。
[imdsTrain,imdsValidation] = splitEachLabel(imds,numTrainFiles,'randomize'); % ここのことです
用意したサンプルデータが十分でかつ偏りがなければ、毎回大体同じ値になることが期待されます。
通常は学習用のデータと検証用のデータをとっかえひっかえしながら何回か検証して、それらの平均精度で手を打ちます。交差検証法というので勉強してみるといいと思います。
  1 件のコメント
Tohru Kikawada
Tohru Kikawada 2019 年 2 月 8 日
値が毎回異なるのは乱数発生に使うシードが異なっているためです。実行毎に乱数のシードを同じにすれば同じ結果が得られます。詳細はrng を参照してみてください。
>> openExample('nnet/TrainABasicConvolutionalNeuralNetworkForClassificationExample')
>> TrainABasicConvolutionalNeuralNetworkForClassificationExample
>> accuracy
accuracy =
0.9976
>> TrainABasicConvolutionalNeuralNetworkForClassificationExample % 乱数のシードが変わっている
accuracy =
0.9944
>> rng('default'); % 乱数のシードを常に初期値にする
>> TrainABasicConvolutionalNeuralNetworkForClassificationExample
accuracy =
0.9976
>> rng('default'); % 乱数のシードを常に初期値にする
>> TrainABasicConvolutionalNeuralNetworkForClassificationExample
accuracy =
0.9976
>> % 値が一致する

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeDeep Learning Toolbox についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!