我用Java构建了自己的神经网络。
它的神经元层结构如下:784(输入层),200,80,10(输出层)
在将MNIST训练数据分成300个批次,每批次包含100张随机选取的图像,并在处理完每个批次后更新权重和偏置,学习率设为0.005。然而,网络似乎采取了一种每次都输出全零的策略。因为简单地说
{0,0,0,0,0,0,0,0,0,0}
比任何实际的猜测策略都要更接近于
{0,1,0,0,0,0,0,0,0,0}。
偶尔,它会尝试改变,但始终找不到比全零输出更好的策略。
谁能告诉我如何解决这个问题?它是否需要更多的训练数据?这是否意味着我编写的反向传播函数存在错误?
感谢任何建议!
回答:
- 确保你的数据标签是以整数编码的
- 确保最后的
Dense
层有10
个单元,并使用softmax
激活函数。 - 使用
sparse_categorical_crossentropy
作为损失函数来编译你的模型。