【问题标题】:validation accuracy is high during training each epoch in a CNN but final accuracy in classification report very low what does it mean?在 CNN 中训练每个 epoch 时,验证准确度很高,但分类报告中的最终准确度很低,这是什么意思?
【发布时间】:2020-09-27 16:26:59
【问题描述】:

我正在构建一个 CNN 模型,用于预测 X 射线图像的类别是否感染了新冠病毒。在训练模型期间,这就是我在每个 epoch 中得到的准确度和损失。

Epoch 1/20
43/43 [==============================] - 157s 4s/step - loss: 16.5535 - accuracy: 0.8844 - val_loss: 1.6308 - val_accuracy: 0.9914

Epoch 2/20
43/43 [==============================] - 153s 4s/step - loss: 9.3576 - accuracy: 0.9647 - val_loss: 1.8470 - val_accuracy: 0.9871

Epoch 3/20
43/43 [==============================] - 152s 4s/step - loss: 4.8507 - accuracy: 0.9720 - val_loss: 2.1491 - val_accuracy: 0.9871

Epoch 4/20
43/43 [==============================] - 153s 4s/step - loss: 2.8917 - accuracy: 0.9772 - val_loss: 0.5409 - val_accuracy: 0.9914

Epoch 5/20
43/43 [==============================] - 153s 4s/step - loss: 1.7138 - accuracy: 0.9831 - val_loss: 0.4102 - val_accuracy: 0.9957

Epoch 6/20
43/43 [==============================] - 153s 4s/step - loss: 2.4398 - accuracy: 0.9801 - val_loss: 5.5315 - val_accuracy: 0.9569

Epoch 7/20
43/43 [==============================] - 153s 4s/step - loss: 4.3175 - accuracy: 0.9661 - val_loss: 0.5032 - val_accuracy: 0.9914

Epoch 8/20
43/43 [==============================] - 152s 4s/step - loss: 1.7567 - accuracy: 0.9816 - val_loss: 0.5169 - val_accuracy: 0.9914

Epoch 9/20
43/43 [==============================] - 153s 4s/step - loss: 1.5359 - accuracy: 0.9786 - val_loss: 0.2652 - val_accuracy: 0.9957

Epoch 10/20
43/43 [==============================] - 153s 4s/step - loss: 0.9022 - accuracy: 0.9897 - val_loss: 0.1173 - val_accuracy: 0.9957

Epoch 11/20
43/43 [==============================] - 153s 4s/step - loss: 0.9991 - accuracy: 0.9801 - val_loss: 0.2755 - val_accuracy: 0.9871

当我对预测运行分类报告时,准确率只有 50%。为什么会发生这种情况,请有人解释一下?

【问题讨论】:

  • 1) 你能分享你的代码吗?获得 50% 的准确率通常表明您的代码有问题。 2)您的模型在第 10 个 epoch 之后开始过度拟合。最好使用早停。您是否重用了训练数据中的验证数据?或者您是否应用了任何预处理步骤,例如缩放/最小-最大缩减/漏斗?

标签: python tensorflow keras deep-learning conv-neural-network


【解决方案1】:

在训练了许多模型之后,我开始知道准确性并没有多大帮助。这就是为什么,你应该关注损失而不是准确性。在这种情况下,我建议你降低学习率,因为我可以看到学习不太稳定。另外,我猜您没有在网络中使用批量标准化层,因此您的准确度为 50%。我不能说太多,因为你没有提供太多细节(比如你没有提供你正在使用的模型结构、优化器和损失函数)。但请尝试降低学习率并将 Batch Normalization 引入您的模型。

【讨论】:

  • 感谢您的澄清。我使用的优化器是亚当。使用了 vgg16 和 densenet 基础模型。我对最后几层进行了修改,但分类报告的准确率无论如何显示在 50% 到 55% 之间。损失函数似乎在连续 epoc 中减少,但对预测影响不大。 .批量标准化是解决这个问题的方法吗?
  • @AkshayMitra 您可以尝试使用批量标准化。
猜你喜欢
  • 2020-10-16
  • 2020-11-02
  • 1970-01-01
  • 2021-07-22
  • 2017-12-21
  • 2020-11-06
  • 2018-08-16
  • 2020-07-05
  • 2019-07-09
相关资源
最近更新 更多