佛山网站设计中心,知识付费网站搭建教程,免费行情软件app,中老年适合在哪个网站做直播目前在做实验#xff0c;参考了一个新的网络架构之后发现训练时损失出现Nan#xff0c;参数了出现了inf的情况#xff0c;先说说我的排查经历。
首先肯定是打印损失#xff0c;损失是最容易出现Nan的#xff0c;有各种原因#xff0c;网上也有很多解决办法#xff0c;我…目前在做实验参考了一个新的网络架构之后发现训练时损失出现Nan参数了出现了inf的情况先说说我的排查经历。
首先肯定是打印损失损失是最容易出现Nan的有各种原因网上也有很多解决办法我这里就不一一赘述了大伙打开CSDN就一搜就有很多很全的
我的问题是在训练的中间参数中出现了inf导致最终的损失为NaN或者inf
用下面的代码判断参数是否出现了NaN或者inf
for i in range(5): # exam是一个参数列表if torch.isnan(exeam[i]).any(): print(下表为{}的元素存在NaN.format(i))if torch.isinf(exeam[i]).any(): print(下表为{}的元素存在inf.format(i))
确定是哪些为NaN之后直接上Relu或者归一化很可惜没用。。。
我参考的文章是这两篇
Vision Transformers for Single Image Dehazing MixDehazeNet : Mix Structure Block For Image Dehazing Network 这两篇文章中都用到了soft reconstruction。现在我还搞不明白这东西是啥 模仿论文MixDehazeNet的代码将生成的参数按照下面的代码计算下 # feat是网络输出的结果10通道
K, atp, tran, B torch.split(feat, (1, 3, 3, 3), dim1)# x是网络的输入
atp K * atp - atp x
tran K * tran - tran x
x K * x - B x
# H, W是限定的尺寸
rgb x[:, :, :H, :W]
atp atp[:, :, :H, :W]
tran tran[:, :, :H, :W] 这样一弄问题就解决了 我分析了下原因代码中的参数出现NaN是因为出现了除以0的情况加上了soft reconstruction之后类似于全局残差关键是后面加上x的那个操作是原先为0的参数变得不为0了除以0的情况消失了就不存在NaN啦。 我是做视觉方向的全局残差机制ResNetFFA-Net在视觉中可谓是有百利而无一害所以这样加应该没问题的 疑问 soft reconstruction究竟是什么东西呢网上的资料甚少chatGPT也没有给出完全的定义。 还请知道的大佬不吝赐教。