pytorch排查loss值出現(xiàn)nan的情況及解決
問題
- 跑實(shí)驗(yàn)室時(shí)出現(xiàn)了損失值為nan(下圖所示)

排查
因?yàn)橛幸恍┡袛嗨杂昧?/p>
bd_index = torch.where(s_label != o_label)[0]
語句來選出滿足條件的下標(biāo),這樣做可能返回一個(gè)空列表(不滿足條件時(shí)),因?yàn)楹罄m(xù)有用到 torch.log() 函數(shù)來計(jì)算,所以如果是空列表放進(jìn)去就會(huì)出現(xiàn)loss = nan,但是不同情況得具體分析,
排查的過程最好用的就是使用語句
with torch.autograd.detect_anomaly():
來將訓(xùn)練代碼包裹起來(如下圖所示),這樣就能迅速定位到出現(xiàn)空值的點(diǎn)(平時(shí)訓(xùn)練時(shí)得去掉,會(huì)拖慢速度)

最終定位到 torch.log() 處,最終解決辦法就是加上常量 log_prob = torch.log(prob + 1e-7) 這樣就不會(huì)空值
- 運(yùn)行成功:

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python 抓取動(dòng)態(tài)網(wǎng)頁內(nèi)容方案詳解
這篇文章主要介紹了Python 抓取動(dòng)態(tài)網(wǎng)頁內(nèi)容方案詳解,首先通過Chrome的工具來進(jìn)行分析,然后再使用python進(jìn)行處理,最終得到我們需要的內(nèi)容,非常的方便,這里也算是給大家提供一個(gè)思路2014-12-12
Python實(shí)現(xiàn)獲取磁盤剩余空間的2種方法
這篇文章主要介紹了Python實(shí)現(xiàn)獲取磁盤剩余空間的2種方法,結(jié)合具體實(shí)例形式分析了Python操作計(jì)算機(jī)硬件的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-06-06
Numpy中np.dot與np.matmul的區(qū)別詳解
本文主要介紹了Numpy中np.dot與np.matmul的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
在Linux下使用Python的matplotlib繪制數(shù)據(jù)圖的教程
這篇文章主要介紹了在Linux下使用Python的matplotlib繪制數(shù)據(jù)圖的教程,matplotlib基于Numpy進(jìn)行科學(xué)計(jì)算上的延伸,需要的朋友可以參考下2015-06-06

