【问题标题】:Weights becoming "NaN" in implementation of Neural Networks权重在神经网络的实现中变成“NaN”
【发布时间】:2018-09-13 23:41:46
【问题描述】:

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

为了优化,我使用了 MiniBatch 梯度下降(Batch size=100, learning rate = 0.01)

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

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

【问题讨论】:

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


    【解决方案1】:

    就我而言,我忘记对训练数据进行归一化(通过减去平均值)。这导致我的 softmax 方程的分母为 0。希望这会有所帮助。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 不工作。我已添加代码以供审核。谢谢!
      猜你喜欢
      • 2018-11-27
      • 2017-03-01
      • 2020-04-01
      • 2021-06-05
      • 2018-05-11
      • 1970-01-01
      • 2019-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多