【问题标题】:Difference in the Validation and Evaluation Accuracy验证和评估准确性的差异
【发布时间】:2016-06-07 08:48:19
【问题描述】:

我正在使用预训练的 GoogLeNet,然后在我的数据集上对其进行微调以对 11 个类别进行分类。验证数据集似乎给出了 86.5% 的“loss3/top1”。但是当我在评估数据集上评估性能时,它给了我 77% 的准确率。无论我对 train_val.prototxt 进行了哪些更改,我都在 deploy.prototxt 中进行了相同的更改。验证和评估准确性之间的差异是正常的还是我做错了什么? 有什么建议吗?

【问题讨论】:

  • ~10% 的差异相当大。验证集中有多少样本,评估集中有多少?这些集合中的标签分布是否相同?
  • @Shai 验证数据集中的样本总数为 4123,评估中的样本总数为 4118。对于每个类,我确保验证和评估数据集中包含相同数量的图像。
  • 这很奇怪。差异太大而不能被视为“样本错误”,但太小不能暗示主要错误......
  • @Shai 我应该怎么做才能解决这个问题,什么是主要错误?您认为评估程序有问题吗?
  • this thread 有用吗?

标签: machine-learning computer-vision neural-network deep-learning caffe


【解决方案1】:

为了让您在验证数据集上获得训练模型的公平估计,您需要以有意义的方式设置 test_itrtest_batch_size

所以,test_itr 应该设置为:

Val_data / test_batch_Size

其中,Val_data 是验证数据集的大小,test_batch_Size 是在验证阶段的 batch_size 中设置的验证批量大小值。

【讨论】:

  • 我的test_itr 是40,test_batch_size 是50。根据你的公式,我的设置是错误的。
  • 您的test_itr 应该超过82。希望这能解决您的问题。
  • @user2409356 似乎您在训练期间的测试阶段并未涵盖整个验证集。尝试将test_iter 设置为 4123/50 ~= 83,看看你的准确度是多少。
  • @Shai 将 test_itr 更改为 100 后,验证数据集的准确率为 85.4%。更改 Test_itr 无效。
  • @user2409356 不要把它改成100,它应该是83:你多算了部分验证示例。
猜你喜欢
  • 1970-01-01
  • 2018-07-20
  • 1970-01-01
  • 2015-06-18
  • 1970-01-01
  • 2023-03-08
  • 2021-09-07
  • 2021-11-12
  • 2023-03-28
相关资源
最近更新 更多