首先要明白訓練集、驗證集、測試集的含義,簡單來說:
1. 訓練集是用來training模型,調整對應的parameters(例如weights)
2. 驗證集是用來tuning模型的 hyperparameters(例如architecture,訓練前就已經決定好的parameters,例如有多少hiden layers,這也是它也被稱為開發集的原因)
3. 測試集用來獲得最終模型的performance,例如正確率等
有個這個常識,就知道怎麼劃分了,譬如你有一個數據集,首先要做一下
shuffle,劃分之前要保證三個資料集有相同的資料分佈,如下圖,有這個基礎,測試和驗證集才有意義。
至於怎麼劃分,需要看具體的case,參考斯坦福大學的deep learning課程 https://cs230-stanford.github.io/train-dev-test-split.html,沒有具體的標準,不過儘量讓驗證集和測試集不要太少,例如1000000圖片集,驗證和測試不要低於10000,即1%,如果資料量不夠大的話,通常會按照80-10-10的比例:
注意:random不是完全隨機,需要保證reproducible
好了,關於這個話題就說到這裡,遇到類似的問題,怎麼樣找到合適的答案,首先要找第一手資料,不要去在百度上亂搜一氣,最好直接找到基礎資料,本例中就是用Stanford學校的課程作為輸入,就不會走偏了。
首先要明白訓練集、驗證集、測試集的含義,簡單來說:
1. 訓練集是用來training模型,調整對應的parameters(例如weights)
2. 驗證集是用來tuning模型的 hyperparameters(例如architecture,訓練前就已經決定好的parameters,例如有多少hiden layers,這也是它也被稱為開發集的原因)
3. 測試集用來獲得最終模型的performance,例如正確率等
有個這個常識,就知道怎麼劃分了,譬如你有一個數據集,首先要做一下
shuffle,劃分之前要保證三個資料集有相同的資料分佈,如下圖,有這個基礎,測試和驗證集才有意義。
至於怎麼劃分,需要看具體的case,參考斯坦福大學的deep learning課程 https://cs230-stanford.github.io/train-dev-test-split.html,沒有具體的標準,不過儘量讓驗證集和測試集不要太少,例如1000000圖片集,驗證和測試不要低於10000,即1%,如果資料量不夠大的話,通常會按照80-10-10的比例:
注意:random不是完全隨機,需要保證reproducible
好了,關於這個話題就說到這裡,遇到類似的問題,怎麼樣找到合適的答案,首先要找第一手資料,不要去在百度上亂搜一氣,最好直接找到基礎資料,本例中就是用Stanford學校的課程作為輸入,就不會走偏了。