gpt4 book ai didi

python - 如何理解 Keras 模型拟合中的 loss acc val_loss val_acc

转载 作者:IT老高 更新时间:2023-10-28 21:12:54 25 4
gpt4 key购买 nike

我是 Keras 的新手,对如何理解我的模型结果有一些疑问。这是我的结果:(为方便起见,我只在每个 epoch 之后粘贴 loss acc val_loss val_acc)

对 4160 个样本进行训练,对 1040 个样本进行验证,如下所示:

Epoch 1/20
4160/4160 - loss: 3.3455 - acc: 0.1560 - val_loss: 1.6047 - val_acc: 0.4721

Epoch 2/20
4160/4160 - loss: 1.7639 - acc: 0.4274 - val_loss: 0.7060 - val_acc: 0.8019

Epoch 3/20
4160/4160 - loss: 1.0887 - acc: 0.5978 - val_loss: 0.3707 - val_acc: 0.9087

Epoch 4/20
4160/4160 - loss: 0.7736 - acc: 0.7067 - val_loss: 0.2619 - val_acc: 0.9442

Epoch 5/20
4160/4160 - loss: 0.5784 - acc: 0.7690 - val_loss: 0.2058 - val_acc: 0.9433

Epoch 6/20
4160/4160 - loss: 0.5000 - acc: 0.8065 - val_loss: 0.1557 - val_acc: 0.9750

Epoch 7/20
4160/4160 - loss: 0.4179 - acc: 0.8296 - val_loss: 0.1523 - val_acc: 0.9606

Epoch 8/20
4160/4160 - loss: 0.3758 - acc: 0.8495 - val_loss: 0.1063 - val_acc: 0.9712

Epoch 9/20
4160/4160 - loss: 0.3202 - acc: 0.8740 - val_loss: 0.1019 - val_acc: 0.9798

Epoch 10/20
4160/4160 - loss: 0.3028 - acc: 0.8788 - val_loss: 0.1074 - val_acc: 0.9644

Epoch 11/20
4160/4160 - loss: 0.2696 - acc: 0.8923 - val_loss: 0.0581 - val_acc: 0.9856

Epoch 12/20
4160/4160 - loss: 0.2738 - acc: 0.8894 - val_loss: 0.0713 - val_acc: 0.9837

Epoch 13/20
4160/4160 - loss: 0.2609 - acc: 0.8913 - val_loss: 0.0679 - val_acc: 0.9740

Epoch 14/20
4160/4160 - loss: 0.2556 - acc: 0.9022 - val_loss: 0.0599 - val_acc: 0.9769

Epoch 15/20
4160/4160 - loss: 0.2384 - acc: 0.9053 - val_loss: 0.0560 - val_acc: 0.9846

Epoch 16/20
4160/4160 - loss: 0.2305 - acc: 0.9079 - val_loss: 0.0502 - val_acc: 0.9865

Epoch 17/20
4160/4160 - loss: 0.2145 - acc: 0.9185 - val_loss: 0.0461 - val_acc: 0.9913

Epoch 18/20
4160/4160 - loss: 0.2046 - acc: 0.9183 - val_loss: 0.0524 - val_acc: 0.9750

Epoch 19/20
4160/4160 - loss: 0.2055 - acc: 0.9120 - val_loss: 0.0440 - val_acc: 0.9885

Epoch 20/20
4160/4160 - loss: 0.1890 - acc: 0.9236 - val_loss: 0.0501 - val_acc: 0.9827

以下是我的理解:

  1. 两个损失(loss 和 val_loss)都在减少,而 tow acc(acc 和 val_acc)在增加。因此,这表明模型经过了良好的训练。

  2. val_acc 衡量模型预测的好坏。所以对于我来说,看起来模型在 6 个 epoch 之后训练得很好,其余的训练是没有必要的。

我的问题是:

  1. acc(训练集上的 acc)总是比 val_acc 小,实际上要小得多。这是正常的吗?为什么会这样?在我看来,acc 通常应该比 val_acc 更好。

  2. 经过 20 个 epoch,acc 仍在增加。那么我应该使用更多的时期并在 acc 停止增加时停止吗?或者我应该在 val_acc 停止增加的地方停下来,不管 acc 的趋势如何?

  3. 对我的结果还有其他想法吗?

谢谢!

最佳答案

回答您的问题:

  1. 如官方keras FAQ所述

the training loss is the average of the losses over each batch of training data. Because your model is changing over time, the loss over the first batches of an epoch is generally higher than over the last batches. On the other hand, the testing loss for an epoch is computed using the model as it is at the end of the epoch, resulting in a lower loss.

  1. 训练应该在 val_acc 停止增加时停止,否则你的模型可能会过度拟合。您可以使用 earlystopping 回调来停止训练。

  2. 您的模型似乎取得了很好的效果。继续努力。

关于python - 如何理解 Keras 模型拟合中的 loss acc val_loss val_acc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47299624/

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