我正在尝试训练一个完全连接的神经网络来使用 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。谢谢!