訓練過程中的train,val,test的區別

train是訓練集,val是訓練過程中的測試集,是爲了讓你在邊訓練邊看到訓練的結果,及時判斷學習狀態。test就是訓練模型結束後,用於評價模型結果的測試集。只有train就可以訓練,val不是必須的,比例也可以設置很小。test對於model訓練也不是必須的,但是一般都要預留一些用來檢測,通常推薦比例是8:1:1

 

valvalidation的簡稱。
training datasetvalidation dataset都是在訓練的時候起作用。
而因爲validation的數據集和training沒有交集,所以這部分數據對最終訓練出的模型沒有貢獻。
validation的主要作用是來驗證是否過擬合、以及用來調節訓練參數等。

比如訓練0-10000次迭代過程中,trainvalidationloss都是不斷降低,
但是從10000-20000過程中train loss不斷降低,validationloss不降反升。
那麼就證明繼續訓練下去,模型只是對training dataset這部分擬合的特別好,但是泛化能力很差。
所以與其選取20000次的結果,不如選擇10000次的結果。
這個過程的名字叫做Early Stopvalidation數據在此過程中必不可少。

如果跑caffe自帶的訓練demo,你會用到train_val.prototxt,這裏面的val其實就是validation
而網絡輸入的TEST層,其實就是validation,而不是test。你可以通過觀察validationlosstrainloss定下你需要的模型。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章