使用Resnet50進行訓練,第乙個epoch正常,之後loss和accuracy都是nan,怎麼辦?

時間 2021-07-06 13:04:50

1樓:Hey-Yo

建議換個優化器,我前幾天也遇到了一樣的問題。

開始用的SGD優化器,調了半天引數,沒有結果。最後換成了Adam優化器,loss就正常了。

2樓:

開debug,逐步除錯,看feature裡有沒有0值,或過程中有沒有除0操作。

另外輸出特徵的scale要合理,可以嘗試normalize的操作,否則計算loss時可能因為數值過大而NaN。

3樓:

比較常見的錯因:

太大的學習率,調小試一下

輸入沒有白化(這個可能比較大),如果你載入了預訓練權重更有可能如果是自己搭的網路增加下BN,但你用的resnet50所以沒有這個問題

訓練階段輸出記得softmax,不啟用求交叉熵損失很有可能nan綜合來講,24可能性大點

4樓:斐波那契洗澡水

是分類問題嗎?Res50是自己寫的嗎?如果是,可以用官方實現重新實驗一下。

如果官方實現沒有這種情況,說明是自己搭建的模型有問題,如果也有這種情況,大概率是資料標註出了問題

5樓:肉臉吊面貓

看樣子是你的Loss不再變化了,因為我沒看過你網路的結構,我只能給出幾個建議,你需要乙個個排查。直到他成為乙個最簡單的CNN後(Conv layer, Pooling, Batchnorm, and MLP),才能排除是模型問題。

在輸入網路之前,使輸入資料標準化。

取消早停和動態學習率(這裡出錯導致Error可能性較大)在你的MLP隱藏層設定較大的神經元數,比如1024,因為MLP隱藏層提取所有 CNN 層壓縮的影象特徵

如果上面所有模組都去掉,變為最簡單CNN後,依然不見好轉,基本排除模型問題,檢視你資料的標籤是否有誤。

為什麼resnet不在一開始就使用residual block,而是使用乙個7 7的卷積?

Enabling Deep Residual Networks for Weakly Supervised Object Detection 把7x7換成3個3 the large kernel 7 7 convolutions in the stem blockweaken the informa...

使用彈性網elastic net進行多元線性回歸時,怎麼比較各個解釋變數的權重?

EricG 我覺得可能有這麼幾個思路可以考慮 看標準化以後的係數 線性回歸中,自變數的係數表示自變數變化乙個單位時,因變數變化的大小 係數越大,自變數對因變數的影響越大,也就越重要。但是必須是標準化以後的係數 比如你用克作為質量的單位,和用千克作為質量的單位,回歸出來的係數差了1000倍,但是你不能...

50焦段鏡頭如何進行風光攝影?

曹BOXING 正如其他回答所說,50mm給人帶來的感覺就像身臨其境,就好像眼前看到的景象。50mm在拼接的時候也帶來更少的畸變。50mm基本都是大光圈,有時也可以利用大光圈給較為雜亂的前景帶來虛化,帶來強烈的虛實對比。 No.3 50我最初拿來掃街,後來拿來拍人像。比起35是緊湊,但是緊湊有緊湊的...