当前位置:   article > 正文

训练神经网络时train loss或是validation loss出现nan_transloss nan

transloss nan

最近使用带有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/
我自己的基本排查思路是:

  1. 首先检查数据中是否有inf 或者nan的情况。

普通numpy数组可用

np.all(np.isfinite(data))
  • 1

我自己用的是医疗图像nifiti格式的压缩图像,所以使用代码如下:

def check_image(img_fname: str):
	#检查图像/numpy数组中是否有nan存在
    npy = sitk.GetArrayFromImage(sitk.ReadImage(img_fname))
    return np.any(np.isnan(npy
  • 1
  • 2
  • 3
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/311552
推荐阅读
相关标签
  

闽ICP备14008679号