Tensorflow 20个时代之后,测试损失似乎有所增加

Tensorflow 20个时代之后,测试损失似乎有所增加,tensorflow,deep-learning,mnist,Tensorflow,Deep Learning,Mnist,我使用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.00

我使用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

这很可能是由于安装过度造成的。特别是,注意测试损失是如何增加的,但测试精度基本保持不变(甚至不断增加)。这可能是由于模型(在测试集上)做出了越来越确定的错误预测。也就是说,随着时间的推移,它不会做出更多错误的预测(解释稳定/增加的准确性),但会对其当前错误的预测(解释不断增加的成本)更加自信


这反过来可能是由于模型对训练数据上的特征进行了过度拟合,而这些特征并没有推广到测试数据。对于MNIST来说尤其如此,在MNIST中,过度拟合到“虚假”特征(如单个像素)是常见的。

您可能已经看到了列出的基准,作者使用了两个层,每个层有300个神经元,并获得了高精度。你有更多的神经元,这将使网络更容易过度拟合,所以首先尝试减少神经元。你使用的是大批量,这将使网络难以融合,然后再尝试使用小批量或更小的学习率,如
.0005
。最后一件事是尝试使用
LeakyRelu()
tanh()
甚至
sigmoid()
,因为
Relu()
函数可能在后期学习过程中失效