訓練集 測試集 驗證集之間的區別及理解

2021-10-03 19:10:11 字數 1680 閱讀 4138

在寫**時,資料集的劃分時常影響我們的準確率,好的資料集劃分一般分為訓練集(training set),驗證集(development set/validation set)和測試集(test set)。

訓練集

訓練集:用於模型擬合的資料樣本,即用於訓練的樣本集合,主要用來訓練神經網路中的引數,

驗證集

驗證集:模型訓練過程中單獨留出的樣本集,它可以用於調整模型的超引數和用於對模型的能力進行初步評估。

測試集

各資料集的作用

p1:訓練集的作用

擬合模型,調整網路權重。

p2:驗證集的作用

作用1:快速調參,也就是通過驗證集我們可以選擇超引數(網路層數、網路節點數、迭代次數epoch、學習率learning rate、優化器)等。

作用2:選擇超引數,為了讓我們的模型在測試集表現得更好,調參是不可避免地一部分,如果把測試集當驗證集,調參去擬合測試集合,是不可行地,這相當於作弊。

作用3:監控模型是否正常

驗證集的重要性

如果沒有設定驗證集,我們通常得等到測試集才可以知道我們模型真正得實力,然後再來調整引數,這樣子時間代價較高,通過驗證集我們可以訓練幾個epoch後檢視模型的訓練效果及我們的網路是否出現異常,然後決定怎麼調整我們的超引數。

p3:測試集的作用

僅僅用來評估模最終模型的泛化能力,確認網路的實際**能力。

個人對資料集的理解:[訓練集train,測試集test,驗證集val]

我的理解是∶

test是乙個神秘的人,也是乙個有選擇困難症的人,它不參與引數學習的過程也不參與引數的選擇過程,test依舊是蒙娜麗莎的微笑。test就好像沉迷於桃花林的評價者,它只會給經歷磨難(訓練)的net打分,其他的事情它一概不管。

那麼net應該怎麼確定自己變得更加優秀,在武林排行版上排位上公升,使得其在最後獲得高分而順利出關呢?由此便誕生了val,val就好像是net的師傅,在net取經路上給出建議和及時終止不恰當的行為,既讓net可以提高自己的能力,也可以避免net走火入魔。而net也不是乙個啃老族,他也會依靠自己的訓練來提高,即train。

訓練集-----------學生的課本;學生 根據課本裡的內容來掌握知識。

驗證集------------作業,通過作業可以知道 不同學生學習情況、進步的速度快慢。

測試集-----------考試,考的題是平常都沒有見過,考察學生舉一反三的能力。

網路的步驟:

step1:訓練普通引數。

在訓練集(給定超引數)上利用學習演算法,訓練普通引數,使得模型在訓練集上的誤差降低到可接受的程度(一般接近人類的水平)。

step2:'訓練』超引數。

在驗證集上驗證網路的generalization error(泛化能力),並根據模型效能對超引數進行調整。

step3:重複1和2兩個步驟,直至網路在驗證集上取得較低的generalization error。此時完整的訓練過程結束.在完成引數和超引數的訓練後,在測試集上測試網路的效能。

[鏈結2]

訓練集 驗證集 測試集的區別

深度學習模型的引數分為普通引數和超引數 普通引數 在模型訓練的過程中可以被梯度下降所更新的,也就是訓練集所更新的引數。超引數 比如網路層數 網路節點數 迭代次數 學習率等等,這些引數不在梯度下降的更新範圍內。超引數的設定一般是人工根據驗證集來調。訓練集的作用就是通過梯度下降來調整模型的內部普通引數。...

訓練集 驗證集 測試集

訓練集loss 驗證集loss 測試集loss 乙個好的網路,二者的差距應該是很低的。但一般情況下因為網路不可避免地存在一定程度上的過擬合,所以肯定是train loss低於test lost,但如果低太多,就得考慮是過擬合的問題還是因為樣本的特徵空間不統一的問題。驗證集基本是在每個epoch完成後...

訓練集,驗證集,測試集

普通引數就是可以被梯度下降所更新的,也就是訓練集所更新的引數。超引數是指訓練開始之前設定的引數,不在梯度下降的更新範圍內,比如網路層數 網路節點數 迭代次數 學習率等等 1.訓練集 確定模型後,用於訓練普通引數 2.驗證集 交叉驗證集cv 驗證集在每個epoch訓練完成後,用來測試一下當前模型的準確...