gpt4 book ai didi

python - Keras:val_loss 正在增加,评估损失太高

转载 作者:行者123 更新时间:2023-11-30 09:58:05 25 4
gpt4 key购买 nike

我是 Keras 新手,我正在使用它构建一个普通的神经网络来对数字 MNIST 数据集进行分类。
事先我已经将数据分为 3 部分:55000 个用于训练,5000 个用于评估,10000 个用于测试,并且我已缩小像素密度(除以 255.0)
我的模型如下所示:

model = keras.models.Sequential()
model.add(keras.layers.Flatten(input_shape=[28,28]))
model.add(keras.layers.Dense(100, activation='relu'))
model.add(keras.layers.Dense(10, activation='softmax'))

这是编译:

model.compile(loss='sparse_categorical_crossentropy',
optimizer = 'Adam',
metrics=['accuracy'])

我训练模型:

his = model.fit(xTrain, yTrain, epochs = 20, validation_data=(xValid, yValid))

一开始 val_loss 会减小,然后虽然准确度在增加,但它会增加。

Train on 55000 samples, validate on 5000 samples
Epoch 1/20
55000/55000 [==============================] - 5s 91us/sample - loss: 0.2822 - accuracy: 0.9199 - val_loss: 0.1471 - val_accuracy: 0.9588
Epoch 2/20
55000/55000 [==============================] - 5s 82us/sample - loss: 0.1274 - accuracy: 0.9626 - val_loss: 0.1011 - val_accuracy: 0.9710
Epoch 3/20
55000/55000 [==============================] - 5s 83us/sample - loss: 0.0899 - accuracy: 0.9734 - val_loss: 0.0939 - val_accuracy: 0.9742
Epoch 4/20
55000/55000 [==============================] - 5s 84us/sample - loss: 0.0674 - accuracy: 0.9796 - val_loss: 0.0760 - val_accuracy: 0.9770
Epoch 5/20
55000/55000 [==============================] - 5s 94us/sample - loss: 0.0541 - accuracy: 0.9836 - val_loss: 0.0842 - val_accuracy: 0.9742

Epoch 15/20
55000/55000 [==============================] - 4s 82us/sample - loss: 0.0103 - accuracy: 0.9967 - val_loss: 0.0963 - val_accuracy: 0.9788
Epoch 16/20
55000/55000 [==============================] - 5s 84us/sample - loss: 0.0092 - accuracy: 0.9973 - val_loss: 0.0956 - val_accuracy: 0.9774
Epoch 17/20
55000/55000 [==============================] - 5s 82us/sample - loss: 0.0081 - accuracy: 0.9977 - val_loss: 0.0977 - val_accuracy: 0.9770
Epoch 18/20
55000/55000 [==============================] - 5s 85us/sample - loss: 0.0076 - accuracy: 0.9977 - val_loss: 0.1057 - val_accuracy: 0.9760
Epoch 19/20
55000/55000 [==============================] - 5s 83us/sample - loss: 0.0063 - accuracy: 0.9980 - val_loss: 0.1108 - val_accuracy: 0.9774
Epoch 20/20
55000/55000 [==============================] - 5s 85us/sample - loss: 0.0066 - accuracy: 0.9980 - val_loss: 0.1056 - val_accuracy: 0.9768

当我评估损失太高时:

model.evaluate(xTest, yTest)

结果:

10000/10000 [==============================] - 0s 41us/sample - loss: 25.7150 - accuracy: 0.9740
[25.714989705941953, 0.974]

这可以吗,还是过度拟合的迹象?我应该做些什么来改善它吗?提前致谢。

最佳答案

通常情况下,这是不行的。您希望损失率尽可能小。您的结果是典型的过度拟合结果。您的网络“知道”其训练数据,但无法分析新图像。您可能想要添加一些图层。也许卷积层、Dropout 层……另一个想法是增强你的训练图像。 Keras 提供的 ImageDataGenerator 类可能会帮助您

另一件需要注意的事情可能是你的超参数。为什么在第一个密集层中使用 100 个节点?如果您想从密集层开始,也许像 784 (28*28) 这样的东西似乎更有趣。我建议使用Convolutional-Dropout-Dense的某种组合。那么你的dense层可能不需要那么多节点......

关于python - Keras:val_loss 正在增加,评估损失太高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60163782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com