PyTorch梯度爆炸、loss反向傳播爲nan

在最近的項目中用到了自定義loss函數,代碼一切都準備就緒後,在訓練時遇到了梯度爆炸的問題,每次訓練幾個iterations後,梯度和loss都會變爲nan。通常狀況下,梯度中間部分值存在0狀況,梯度就會產生nan,致使該層向前的層梯度和權重都爲Nanweb

參考文獻:svg

  • https://zhuanlan.zhihu.com/p/79046709