首页 文章

在神经网络的实现中权重变为“NaN”

提问于
浏览
-1

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

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

但是,经过几次迭代后,权重变为“NaN”,并且预测值对于每个测试用例都是相同的 .

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

2 回答

  • 0

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

  • 0

    在我的情况下,我忘记了训练数据的标准化(通过减去平均值) . 这导致我的softmax方程的分母为0.希望这有帮助 .

相关问题