赞
踩
最近使用带有SE block的网络在pytorch框架下做训练。training loss 随着epoch增多不断下降,但是突然到某一个epoch出现loss为nan的情况,但是两三个epoch之后,loss竟然又恢复正常,而且下降了。
这几篇博客是我debug的借鉴,真的非常有用。
这篇介绍了出现nan的基本解决思路。
https://blog.csdn.net/qq_32799915/article/details/80612342
这篇介绍了为什么在多层dense layer之后某一层dense layer输出可能会出现nan,以及weight初始化的重要性及初始化方法。
https://yey.world/2020/12/17/Pytorch-14/
我自己的基本排查思路是:
普通numpy数组可用
np.all(np.isfinite(data))
我自己用的是医疗图像nifiti格式的压缩图像,所以使用代码如下:
def check_image(img_fname: str):
#检查图像/numpy数组中是否有nan存在
npy = sitk.GetArrayFromImage(sitk.ReadImage(img_fname))
return np.any(np.isnan(npy
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。