首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的InceptionV3模型给出了一个高的训练精度(99%),一个高的验证精度(95%+),但是一个很低的测试精度(55%)?

为什么我的InceptionV3模型给出了一个高的训练精度(99%),一个高的验证精度(95%+),但是一个很低的测试精度(55%)?
EN

Data Science用户
提问于 2021-06-21 15:48:23
回答 2查看 537关注 0票数 1

注:请完整地看一遍。

我的数据集:

  • 我制作的流行狗对猫数据集(https://www.kaggle.com/c/dogs-vs-cats/data)的一个子集,因为原始数据集有太多(两个文件夹中有25000个--猫和狗--每个文件夹都有12500张)--在训练文件夹中标记图像,并在测试文件夹中随机排列未贴标签的图像。
  • 我的数据集名为“狗-vs-猫_ 15000 _AbC”,有15000张图片,有3个文件夹:
  • 培训文件夹:我的火车-AbC_ 9000 _1-从-‘火车’-9000图片- 4500猫和4500狗
  • 验证文件夹:我的-有效-AbC_ 3000 _2-从-‘火车’-3000图片- 1500猫和1500狗
  • 测试文件夹:我的测试-AbC_ 3000 _3-从‘火车’-3000图像- 1500猫和1500狗
  • 因此,有60:20:20的分裂。
  • 图像没有重叠。

亮点:

  • img_height,img_width = 150,150固定。请注意,图像最初出现在不同的维度。向下缩放正在下面进行。
  • 完成了数据增强,并创建了3个数据生成器:
代码语言:javascript
复制
 train_generator = train_datagen.flow_from_directory(train_data_dir, ...

 valid_generator = train_datagen.flow_from_directory(valid_data_dir, ...

 test_generator = test_datagen.flow_from_directory(test_data_dir, ...
  • 请注意,我是如何很快得到了非常高的火车和有效的准确性,以至于后者比前者高:

历元1/100 90/90 ============================== -6157 s 68s/步进损失: 0.4265 -精度: 0.9142 - val_loss: 0.1147 - val_accuracy: 0.9530

..。

============================== -86 s 954 90/步进损耗: 0.0282 -精度: 0.9907 - val_loss: 0.0992 - val_accuracy: 0.9650

  • 现在来看一下测试的准确性,测试精度在10个迭代中不同,并且通常很差:
代码语言:javascript
复制
for i in range(1, 11):
  evaluate = save_bottlebeck_features(None).evaluate(test_generator, steps = test_generator.n // batch_size, verbose =1)
  print('Accuracy Test : {}'.format(evaluate[1]))
代码语言:javascript
复制
Model loaded.
30/30 [==============================] - 12s 335ms/step - loss: 1.5205 - accuracy: 0.5470

精度测试: 0.546999990940094

谢谢您抽时间见我。

EN

回答 2

Data Science用户

发布于 2021-06-21 23:24:34

你的训练精度似乎太高,这可能会导致过度拟合,即对新的/测试数据的概括能力较差。

您应该添加一些功能,如辍学(~0.1),以提高概括,并有一个良好的训练效果(约90%-95%)。

票数 1
EN

Data Science用户

发布于 2021-06-23 06:59:59

问题已经解决了。在我的例子中,数据集和模型都很好。但是,实际上代码中存在一个bug,更具体地说,在计算单元格中。

我在一个函数中定义了我的InceptionV3模型,该函数和往常一样被训练和验证。然而,在评估过程中,我编写的代码使它每次测试时都会创建一个新的模型实例,这就是为什么测试的准确性很低的原因。

在纠正错误后,我设法获得了96%+所需的测试精度。如果你愿意的话,你可以在更新后查看笔记本。我认为这可能也是其他人的问题,假设他们的数据集做得很好。通常,在深度学习中,如果某件事情太奇怪,甚至太好,不可能是真的,它可能与代码中的一个bug有关。

票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/96926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档