python神经网络训练损失率nan_神经网络训练时出现nan错误

在使用TensorFlow训练CNN和LSTM时,遇到训练损失变为NaN的问题。主要原因是梯度爆炸、错误的损失函数和错误的输入数据。解决方法包括调整学习率、添加正则化项、检查并处理数据中的NaN值。通过这些措施,成功提高了模型的稳定性和准确性。
摘要由CSDN通过智能技术生成

现在一直在用TensorFlow训练CNN和LSTM神经网络,但是训练期间遇到了好多坑,现就遇到的各种坑做一下总结

1.问题一;训练CNN的时候出现nan

CNN是我最开始接触的网络,我的研究课题就是利用CNN,LSTM等网络对人体动作做识别。动作数据来源于手机的加速度计,做动作的人在固定位置携带手机并做特定动作,实验人员接收手机的加速度计数值并打上特定的动作标签。

在训练CNN网络时一共遇到两处坑,一是遇到在训练期间遇到nan错误,这个错误很常见。nan的错误多源于你的学习率设置的太大或者batchsize设置的太大,可以10倍10倍的减小学习率直到nan错误不出现。其实要弄明白nan错误怎么出现的才能真正的解决这个错误。

这个错误是因为logits输出太大变成INF,对这个取log就会在求梯度就会变成nan,nan是not a number 的缩写,表示不是一个有理数。所以除了调小学习率这个解决方案,另一个解决方案还可以给loss加正则化项。

2.问题二;在训练CNN的时候loss一直降不下去

我用普通的卷积核对数据做卷积,准确率保持在0.4左右不动了,loss也是到后面基本不降,各种调网络结构终于找到一种深度可分离卷积结构可以使准确率达到0.9左右。深度卷积与我们了解的普通卷积网络的不同点就是它只做单通道卷积,也就是一次卷积后各个通道的卷积结果不相加,各自独立做为一个featuremap。但是这种网络结构的神经元个数增长很快,所以它的训练会比普通卷积慢很多,对于通道数过多的数据并不是很适合,但是这种网络的鲁棒性很好。

其实我这里出现loss不降的原因我后来找到了,是因为我的数据里有错误,数据本身就含有了nan的数据,错误的数据导致网络无法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值