我使用8层完全连接的神经网络(tensorflow)训练了MNIST并获得了我的结果,如下所示。我可以知道为什么在20世纪后测试损失增加了吗?那是因为过度拟合吗?这些是网络配置:
L1: 1600 neurons
L2: 800 neurons
L3: 400 neurons
L4: 200 neurons
L5: 100 neurons
L6: 60 neurons
L7: 30 neurons
L8: 10 neurons
Optimizer: Adam (learning_rate = 0.001)
activation function: Relu
batch size: 64
dropout rate: 0.7
epoch:100
答案 0 :(得分:3)
这很可能是由于过度拟合。特别要注意测试损失如何增加,但测试准确度大致相同(甚至保持增加)。这可能是由模型做出错误的预测(在测试集上)越来越确定。即随着时间的推移,它不会做出更多错误的预测(解释稳定/增加的准确性),但对其当前错误的预测(解释成本增加)变得更加自信。
这又可能是由于训练数据上的特征模型过度拟合而没有推广到测试数据。对于过度拟合“虚假”特征(例如单个像素)的MNIST来说尤其如此。
答案 1 :(得分:2)
您可能已经看过列出here的基准,作者使用2层,每层有300个神经元并获得高精度。你有更多的神经元会使网络更容易过度拟合,所以首先尝试减少神经元。而你使用大批量,这将使网络难以收敛,然后尝试使用小批量或使用更小的学习率,如.0005
。最后一件事是尝试使用LeakyRelu()
或tanh()
甚至sigmoid()
,因为Relu()
函数可能会在后期学习过程中失效。