您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)pytorch交叉熵?fù)p失輸出為負(fù)數(shù)怎么解決,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
網(wǎng)絡(luò)訓(xùn)練中,loss曲線非常奇怪
交叉熵怎么會(huì)有負(fù)數(shù)。
經(jīng)過(guò)排查,交叉熵不是有個(gè)負(fù)對(duì)數(shù)嗎,當(dāng)網(wǎng)絡(luò)輸出的概率是0-1時(shí),正數(shù)??僧?dāng)網(wǎng)絡(luò)輸出大于1的數(shù),就有可能變成負(fù)數(shù)。
所以加上一行就行了
out1 = F.softmax(out1, dim=1)
補(bǔ)充知識(shí):在pytorch框架下,訓(xùn)練model過(guò)程中,loss=nan問(wèn)題時(shí)該怎么解決?
當(dāng)我在UCF-101數(shù)據(jù)集訓(xùn)練alexnet時(shí),epoch設(shè)為100,跑到三十多個(gè)epoch時(shí),出現(xiàn)了loss=nan問(wèn)題,當(dāng)時(shí)是一臉懵逼,在查閱資料后,我通過(guò)減小學(xué)習(xí)率解決了問(wèn)題,現(xiàn)總結(jié)一下出現(xiàn)這個(gè)問(wèn)題的可能原因及解決方法:
1. 減小整體學(xué)習(xí)率。學(xué)習(xí)率比較大的時(shí)候,參數(shù)可能over shoot了,結(jié)果就是找不到極小值點(diǎn);減小學(xué)習(xí)率可以讓參數(shù)朝著極值點(diǎn)前進(jìn);
2. 改變網(wǎng)絡(luò)寬度。有可能是網(wǎng)絡(luò)后面的層參數(shù)更新異常,增加后面層的寬度試試;
3. 改變層的學(xué)習(xí)率。每個(gè)層都可以設(shè)置學(xué)習(xí)率,可以嘗試減小后面層的學(xué)習(xí)率試試;
4. 數(shù)據(jù)歸一化(減均值,除方差,或者加入normalization,例如BN、L2 norm等);
5. 加入gradient clipping;
6 輸入數(shù)據(jù)含有臟數(shù)據(jù),即NaN,一般當(dāng)使用實(shí)際業(yè)務(wù)的真實(shí)數(shù)據(jù)時(shí),容易出現(xiàn)臟數(shù)據(jù)。
關(guān)于pytorch交叉熵?fù)p失輸出為負(fù)數(shù)怎么解決就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。