Machine learning keras模型中的NaN损失
我有大约10万个“数据批次”的顺序数据,我正在运行一个相当复杂的循环模型(120千个参数)。经过一段时间(看起来很随机),损失变成了nan。我尝试了以下方法Machine learning keras模型中的NaN损失,machine-learning,keras,neural-network,deep-learning,Machine Learning,Keras,Neural Network,Deep Learning,我有大约10万个“数据批次”的顺序数据,我正在运行一个相当复杂的循环模型(120千个参数)。经过一段时间(看起来很随机),损失变成了nan。我尝试了以下方法 检查了非数字的数据,结果是正确的 梯度将其剪裁为标准1 约束每个层的参数 降低了学习速率并添加到RMSProp中的epsilon中,但是在某个点之后,我仍然得到NaN 还有什么我可以尝试调试的吗?我不使用循环网络,但是在我自己与CNN的工作中,当训练批量很小时,我遇到了零星的NaN问题。尝试扩大批量大小 没有代码,我只能给出一个非常笼统的答
还有什么我可以尝试调试的吗?我不使用循环网络,但是在我自己与CNN的工作中,当训练批量很小时,我遇到了零星的NaN问题。尝试扩大批量大小 没有代码,我只能给出一个非常笼统的答案: 当您执行以下操作时,可能会发生NaN:
- 除以0
- 太小数字的对数
- 负数
- [-1,1]
- 浮点('inf')/浮点('inf'))
- 0*浮点('inf')
另请参见:我的指南为我们展示了您的模型的代码。您能解释一下小批量的NaN是如何发生的,以及大批量是如何防止这种情况发生的吗?我怀疑是梯度爆炸造成的,尽管我没有使用RNN,但我知道它们很容易受到振荡的影响。在我的例子中,我使用了一个不寻常的激活函数,我不确定斜率是否有上界。如果生成了一个不走运的批,我相信梯度下降算法有可能输出一个如此大的步长,以至于错误函数会溢出。我的模型可以可靠地训练,前提是批量大小至少为16。我得到了8个批次的偶发NaN,还有不少批次是4个。但是你检查过所有这些东西吗?您的架构是什么(包括损失功能)?我感到非常惊讶的是,批量大小可能与梯度爆炸有关,也可能是梯度爆炸的解决方案。通常,您会使用批标准化或渐变剪裁来避免该问题。