caffe验证集测试集准确率差别很大的可能原因

用caffe自身的训练方法训练的时候,在验证集上准确率达到99%,可是当我用python接口跑测试数据只有50%左右,我起初以为是过拟合,可看了数据发现分类全部偏向一个类别,几乎所有图片,全部分为印刷类。过拟合也不该这样啊。

后来发现是我的均值文件有问题,训练时做了归一化,数据在01之间,可是,直接用训练数据计算的均值在0-255之间,训练时会除255,可是自己用python测试的时候,减去的均值要自己除255,否则,图片均值太大直接覆盖了图片信息,当然只能分一类。

后来,又遇到一次,可是这一次,我能确定我的caffe-model文件没有问题。python训练文件也没有问题,因为我改换另一个caffe-model文件,分类结果是正确的,唯一有问题可能是deploy文件,可是这个我后来 也排除了,检查了很多次了,这就很诡异了,网上查也查不到。

郁闷了一天,只能向老大求助,他说这个可能原因有很多,问我训练时用了gpu吗?用了。测试呢?没用。那看看是不是这个原因吧。

天哪,果然是,加了这么一句话,caffe.set_mode_gpu(),分类结果果然又快又准。

为什么呢?那个模型中我添加了自定义layer,网上看到的,作者实现时只支持gpu计算。

最后总结下,caffe训练时验证集准确率高,用python接口测试测试集准确率低的原因:

1)检查你的python测试文件,是否有问题,比如归一化,比如RGB换成BGR,比如HWC换成CHW

2) 检查deploy文件是否有问题

3)检查你模型的某个layer是否不支持gpu或cpu计算


猜你喜欢

转载自blog.csdn.net/xlm11/article/details/80742589