caffe中train過程的train數據集、val數據集、test時候的test數據集區別


val是validation的簡稱。
training dataset 和 validation dataset都是在訓練的時候起作用。
而因為validation的數據集和training沒有交集,所以這部分數據對最終訓練出的模型沒有貢獻。
validation的主要作用是來驗證是否過擬合、以及用來調節訓練參數等。
 
比如你訓練0-10000次迭代過程中,train和validation的loss都是不斷降低,
但是從10000-20000過程中train loss不斷降低, validation的loss不降反升。
那么就證明繼續訓練下去,模型只是對training dataset這部分擬合的特別好,但是泛化能力很差。
所以與其選取20000次的結果,不如選擇10000次的結果。
這個過程的名字叫做 Early Stop, validation數據在此過程中必不可少。
 
如果你去跑caffe自帶的訓練demo,你會用到train_val.prototxt,這里面的val其實就是validation。
而網絡輸入的TEST層,其實就是validation,而不是test。你可以通過觀察validation的loss和train的loss定下你需要的模型。

但是為什么現在很多人都不用validation了呢?
我的理解是現在模型中防止過擬合的機制已經比較完善了,Dropout\BN等做的很好了。
而且很多時候大家都用原來的模型進行fine tune,也比從頭開始更難過擬合。
所以大家一般都定一個訓練迭代次數,直接取最后的模型來測試。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM