Tensorflow 培训期间验证准确性和验证损失的差异

Tensorflow 培训期间验证准确性和验证损失的差异,tensorflow,machine-learning,keras,deep-learning,computer-vision,Tensorflow,Machine Learning,Keras,Deep Learning,Computer Vision,我正在用14k+图像对我的CNN模型进行30个历元的训练,在第28个历元中,我发现异常的验证精度和损失,如下所示: - 67s - loss: 0.0767 - acc: 0.9750 - val_loss: 0.6755 - val_acc: 0.8412 Epoch 27/30 - 67s - loss: 0.1039 - acc: 0.9630 - val_loss: 0.3671 - val_acc: 0.9018 Epoch 28/30 - 67s - loss: 0.0639

我正在用14k+图像对我的CNN模型进行30个历元的训练,在第28个历元中,我发现异常的验证精度和损失,如下所示:

 - 67s - loss: 0.0767 - acc: 0.9750 - val_loss: 0.6755 - val_acc: 0.8412
Epoch 27/30
 - 67s - loss: 0.1039 - acc: 0.9630 - val_loss: 0.3671 - val_acc: 0.9018
Epoch 28/30
 - 67s - loss: 0.0639 - acc: 0.9775 - val_loss: 1.1921e-07 - val_acc: 0.1190
Epoch 29/30
 - 66s - loss: 0.0767 - acc: 0.9744 - val_loss: 0.8091 - val_acc: 0.8306
Epoch 30/30
 - 66s - loss: 0.0534 - acc: 0.9815 - val_loss: 0.2091 - val_acc: 0.9433
Using TensorFlow backend.

有人能解释一下为什么会发生这种情况吗?

对我来说,这看起来有点太过合适了。你的训练损失接近于零,训练准确度接近100,而验证损失和准确度则在跳跃

我建议您调整您的正则化(辍学、二级/一级、数据增强…)或模型容量


通常,使用具有调整正则化的高容量模型是一种很好的做法。

就像Arkady一样。A说,它看起来很像是过度装修。这意味着你的模特记住了图像,所以你的准确度不断提高。但在验证数据上,结果很糟糕

例句:你记住了2*8=16,却不明白数学中乘法是如何工作的。对于问题2*8,你给出的答案是16。但是对于2*9=?你不知道anwser是什么

如何避免:

  • 使用像imgauge或augmator这样的强图像增强
  • 使用退出层
  • 为每个历元计算并保存两个图形,一个用于列车数据准确性,一个用于验证。使两个图形在开始时正常上升,在历元X之后,验证图形开始跳跃或下降。这个纪元或纪元1是你最后的好状态
  • 使用更多指标,如ROC AUC
  • 将EarlyStop回调与监视val_acc一起使用

  • 看起来你穿得太合适了。你能分享使用的网络架构和优化器吗。?