我在訓練ResNet時,驗證集打亂順序和不打亂順序得到的準確率不一樣,為什麼會有這種情況呢?學而時習2019-01-21 14:59:53

兩種可能:

1。資料不一樣

2。資料不等長,zero padding和mask沒處理好

我在訓練ResNet時,驗證集打亂順序和不打亂順序得到的準確率不一樣,為什麼會有這種情況呢?人工小將2019-01-22 13:53:28

原始資料存在一定的分佈規律,所以學習曲線不平滑,如果資料量夠大的話,打亂後會呈現隨機分佈,學習後更能體現樣本的共性。

舉個簡單例子,我們中學時代都參加了無數的考試,為了考試我們會做很多套卷子,每套卷子上都會有選擇題、填空題、判斷題、問答題等等型別的題型,試想一下如果我們花一個月時間天天練習選擇題,然後再花一個月時間天天練習填空題,再花一個月時間天天練習判斷題,最後花一個月時間練習問答題,短期來看每中型別的題目我們都會做得很好,但把時間維度拉長,當我們練習完問答題的時候也許做填空題的能力已經大不如前。

不管是什麼訓練網路都會出現這種問題,並不是殘差網路才會出現這個現象。

我在訓練ResNet時,驗證集打亂順序和不打亂順序得到的準確率不一樣,為什麼會有這種情況呢?學渣在路上2019-01-22 16:41:21

個人覺得這個挺正常的,首先不知道你訓練的時候有沒有打亂順序,無論是訓練還是驗證都應該打亂順序的,打亂順序是為了使每一個batch的樣本特徵的分佈儘可能的與全部樣本的特徵分佈相同,舉個例子:比如說做人臉識別,有8張影象的鼻子特徵更明顯一些,有8張影象的嘴巴特徵更明顯一些,你用鼻子特徵更明顯的模型識別嘴巴特徵更明顯的影象效果就會差一些,如果不進行隨機,可能就會有一個batch進入的都是鼻子特徵明顯的影象,同時有可能有一個batch進入的是嘴巴特徵明顯的影象,這兩個batch的驗證結果就會不一樣。感覺這是一種均勻分佈的思想

我在訓練ResNet時,驗證集打亂順序和不打亂順序得到的準確率不一樣,為什麼會有這種情況呢?啦啦啦德瑪西亞2019-01-24 23:17:56

程式碼看不出來,我覺得你可以考慮一下資料與標籤是否匹配的問題

我在訓練ResNet時,驗證集打亂順序和不打亂順序得到的準確率不一樣,為什麼會有這種情況呢?dzk95282019-01-25 18:57:57

兄弟,放STACKOVERFLOW上吧,無論格式還是關注度,都比在這裡好多了。。。