Machine learning 权重变为“;“南”;神经网络的实现

Machine learning 权重变为“;“南”;神经网络的实现,machine-learning,neural-network,gradient-descent,softmax,multilabel-classification,Machine Learning,Neural Network,Gradient Descent,Softmax,Multilabel Classification,我试图实现具有5个隐藏层的分类神经网络,并在输出层使用softmax交叉熵。实现是用JAVA实现的 为了优化,我使用了小批量梯度下降法(批量大小=100,学习率=0.01) 然而,经过几次迭代后,权重变成“NaN”,每个测试用例的预测值都是相同的 无法调试此错误的源。 下面是代码的github链接(带有测试/培训文件) 假设您实现的代码是正确的,一个原因是学习率高。如果学习速率较大,权重可能不会收敛,并且可能变得非常小或非常大,这可以显示为NaN。尝试降低学习率,看看是否有任何变化。在我的例子中

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

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

然而,经过几次迭代后,权重变成“NaN”,每个测试用例的预测值都是相同的

无法调试此错误的源。 下面是代码的github链接(带有测试/培训文件)

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

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

不起作用。我已经添加了代码以供审阅。谢谢