MNIST:获得的准确性低于我在互联网上看到的结果

时间:2019-04-15 06:47:25

标签: c++ neural-network mnist sigmoid mse

我正在尝试训练一个完全连接的神经网络,以使用MNIST数据集对手写数字进行分类。我用C ++实现了神经网络。这是我的课程项目的一部分。但是,我发现培训有些奇怪。我不知道出了什么问题。

我的课程讲师要求我们甚至将Sigmoid用作激活函数并将MSE用作损耗函数,甚至用于输出层。我怀疑这是否是正确的选择。但是我仍然遵循他的话。

我的网络结构是:

28*28 (input layer) value: 0-1
|
|
500 (hidden layer) activation: sigmoid
|
|
10 (output layer) activation: sigmoid
|
|
loss: MSE

学习率是0.4。批量大小为100。损失迅速降至0.5,但不再减少。测试精度提高到60%,并且不会再增加。

我想知道我是错误地实现了神经网络还是不应该使用Sigmoid和MSE。谢谢!

1 个答案:

答案 0 :(得分:0)

更改您的激活和丢失功能
Sigmoid在输出层中用于二进制分类,但是MNIST是多分类问题。并使用绝对交叉疗法。 MSE(均方误差)用于回归。