解決pytorch 交叉熵?fù)p失輸出為負(fù)數(shù)的問(wèn)題
網(wǎng)絡(luò)訓(xùn)練中,loss曲線(xiàn)非常奇怪
交叉熵怎么會(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ù)。
以上這篇解決pytorch 交叉熵?fù)p失輸出為負(fù)數(shù)的問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)短網(wǎng)址ShortUrl的Hash運(yùn)算實(shí)例講解
這篇文章主要介紹了Python實(shí)現(xiàn)短網(wǎng)址ShortUrl的Hash運(yùn)算,較為詳細(xì)的分析了Python短網(wǎng)址運(yùn)算的算法原理與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-08-08Python圖像處理之直線(xiàn)和曲線(xiàn)的擬合與繪制【curve_fit()應(yīng)用】
這篇文章主要介紹了Python圖像處理之直線(xiàn)和曲線(xiàn)的擬合與繪制,結(jié)合實(shí)例形式分析了Python曲線(xiàn)擬合相關(guān)函數(shù)curve_fit()的使用技巧,需要的朋友可以參考下2018-12-12django修改models重建數(shù)據(jù)庫(kù)的操作
這篇文章主要介紹了django修改models重建數(shù)據(jù)庫(kù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03Python實(shí)現(xiàn)多元線(xiàn)性回歸的梯度下降法
梯度下降法的機(jī)器學(xué)習(xí)的重要思想之一,梯度下降法的目標(biāo),是使得代價(jià)函數(shù)最小。本文主要和大家分享的是python實(shí)現(xiàn)多元線(xiàn)性回歸的梯度下降法,感興趣的可以了解一下2022-08-08Python跳出循環(huán)語(yǔ)句continue與break的區(qū)別
這篇文章主要介紹了Python跳出循環(huán)語(yǔ)句continue與break的區(qū)別,本文用實(shí)例來(lái)說(shuō)明它們之間的區(qū)別,簡(jiǎn)單易記易懂,需要的朋友可以參考下2014-08-08python plt可視化——打印特殊符號(hào)和制作圖例代碼
這篇文章主要介紹了python plt可視化——打印特殊符號(hào)和制作圖例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04Python根據(jù)已知鄰接矩陣?yán)L制無(wú)向圖操作示例
這篇文章主要介紹了Python根據(jù)已知鄰接矩陣?yán)L制無(wú)向圖操作,涉及Python使用networkx、matplotlib進(jìn)行數(shù)值運(yùn)算與圖形繪制相關(guān)操作技巧,需要的朋友可以參考下2018-06-06python requests 庫(kù)請(qǐng)求帶有文件參數(shù)的接口實(shí)例
今天小編就為大家分享一篇python requests 庫(kù)請(qǐng)求帶有文件參數(shù)的接口實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01在keras中實(shí)現(xiàn)查看其訓(xùn)練loss值
這篇文章主要介紹了在keras中實(shí)現(xiàn)查看其訓(xùn)練loss值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06