caffe中cifar10的full_train模型出現nan的解決辦法

caffe在cifar10 的example上給出了兩個模型,一個是quick模式,一個是full模式,訓練full模式時會出現loss=nan的錯誤(當然不會報錯,不過出現這個結果就是bug)


自己google了一下,在github上找到了原因跟解決方案,原來是作者把用在cuda-convnet的模型照搬過來了,在caffe上的模型應該去掉LRN層,所以解決的方法很簡單:將網絡結構中所有的歸一化層全部去掉,並修改下一層的bottom參數,然後就不會出現loss=nan的錯誤了。


當然,如果自己做實驗時出現loss=nan的問題時,我的一個解決辦法是修改學習率,改的小一點就不會出現錯誤了。實在不行,就把裏面的relu函數變爲sigmoid試一試,代價就是訓練速度會非常非常慢。


還有一個要檢查的點就是要看一下網絡的結構是否合理,我在網上下載的network in network的網絡結構,最後一層竟然沒有一層全連接把輸出變爲類別數,這讓訓練陷入了要麼出現nan要麼結果一直不變的bug境地。


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