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,也比從頭開始更難過擬合。
所以大家一般都定一個訓練迭代次數,直接取最后的模型來測試。