keras训练出现nan的解决流程

这里出现nan可能是在train的loss阶段,也可能是train的metric阶段,还可能是validation阶段,反正都一样。
在写毕设的过程里面,用学弟提取的特征做DNN的训练,loss没有出现nan,但是反而是metric(MSE)里面出现了nan,predict的结果也全是nan。尝试了很多方法来调bug,最后采用的方法是将训练集二分的方法来调试。

  • 先将训练集划成(0,x),x是训练集的大小,假设x=1000
  • 首先尝试train_df = train_df[0:1000],出现了nan,然后缩减为[0,500],仍然出现问题,然后尝试[0,250],没有出现问题,然后尝试[250,500],以此类推
  • 最后缩减到训练集只有10个样本,保存在csv中,用pandas打开看数据,发现某个特征有inf值
  • 到学弟的代码里面查看该特征编写方法,发现除了一个值A,这个值A有极小概率为0,修改了他的计算方法。

最后总结下出现nan时候的调试方法:

1.第一步:检查训练集里面的特征是否出现Nan值或者Inf值。
2.第二步:如果是自己定义的函数(loss或者metric),检查有没有可能除0或者干脆都在分母加上一个极小值。
3.第三步:换一个优化器,如果没出现问题,可能是网络参数有问题,改小一下lr试试,或者调节下其他参数。

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值