tionblog

基本は日記みたいなものです.詳しくは最初の投稿を読んでください!!

【PyTorch】学習時,推論(テスト)時での注意/model.eval()←めちゃくちゃ大事

PyTorchを使ってDeep Learningの学習(train),推論(validation,test)の部分を実装していた時にはまった罠を紹介します.

 

PyTorch tutorial(https://pytorch.org/tutorials/)に,学習時にはmodel.train(),推論時にはmodel.eval()とコードに書かれてあります.modelの中にbatchnormalization層やdropout層が含まれていた場合,これらは学習時では使うが推論時では使わないと言う指定をしてあげなければいけません.なぜならこれらは学習を効率よく行うためのテクニックであって推論時では使われないものだからです.

 

supervisorが渡してくれたコードにはこの二つが書いておらず,書かなくても別にいいものだとずっと放置していたため,このミスに気づくのに2週間ほどかかりました…それまでは当然ですが推論の結果も散々で頭を悩まされていました…おそらくこのミスは一生忘れることがないと思います.

 

ですがこのミスのおかげでPyTorch,Deep Learningの知識をより深めることができたので結果オーライかなと…思い込みます!!