深度学习网络output出现nan

在训练网络的时候,发现输出全都是nan,这个时候很大可能是数值不稳定,比如除数太小,不稳定,或者是log里面的参数太小,不稳定,这个时候在可能出现运算不稳定的地方增加一些稳定系数就好了,比如:
1.在分母的位置增加一个稳定数

    exp_st_sum = exp_st_with_target.sum(dim=1, keepdim=True) + 1e-6
    exp_st_rate = exp_st_with_target / exp_st_sum

2.在log里增加稳定系数

loss_gt = F.nll_loss(torch.log(exp_gt_rate + 1e-6), labels)

--------------------------------------------------------------

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/t20134297/article/details/109543539

----------------------------------------------------------------

以上是求loss时适用的解决方案,对我的问题不适用:

经验贴里最后的sigmoid容易出问题,而Mymoel未用到sigmoid。debug将batchsize调为1,检查output为nan的id号,通过3Dslicer发现该病例有问题(大部分为0),将其去掉后网络正常。

心得:若网络输出为nan,先检查数据

你可能感兴趣的:(学习经验,python,深度学习,机器学习)