解决 训练深度学习网络时候,出现Nan是什么原因,怎么才能避免?

Published on Aug. 22, 2023, 12:10 p.m.

训练深度学习的网络时候,迭代一定次数,会出现loss是nan,然后acc很快降低到了0.1,也就无法继续训练。

梯度爆炸

梯度变得非常大,使得学习过程难以继续
梯度爆炸,解决方法:调学习率、梯度剪裁、归一化
加入gradient clipping;

不当的损失函数

输入中就含有NaN。(这个才是最多的情况)♥

计算loss的时候有log0,可能是初始化的问题,也可能是数据的问题.
设置batch_size = 1,shuffle = False,一步一步地将sample定位到了所有可能的脏数据,删掉。

简单暴力解决,引入动态噪点。,语言引入Bert的mask,可以提高泛化,又可以避免出现无法求导。