重量变为" NaN"在实现神经网络

时间:2018-04-04 12:03:25

标签: machine-learning neural-network gradient-descent softmax multilabel-classification

我正在尝试实现具有5个隐藏层的分类的神经网络,以及输出层中的softmax交叉熵。实现在JAVA中。

为了优化,我使用了MiniBatch梯度下降(批量大小= 100,学习率= 0.01)

然而,经过几次迭代后,权重变为" NaN"并且预测值对于每个测试用例都是相同的。

无法调试此错误的来源。 这是代码的github链接(带有测试/培训文件。) https://github.com/ahana204/NeuralNetworks

2 个答案:

答案 0 :(得分:0)

假设您实施的代码是正确的,一个原因是学习率很高。如果学习率很大,则权重可能不会收敛并且可能变得非常小或非常大,这可以显示为NaN。尝试降低学习率,看看是否有任何变化。

答案 1 :(得分:0)

在我的情况下,我忘了归一化训练数据(减去均值)。这导致我的softmax方程的分母为0。希望这会有所帮助。

相关问题