概述
因为平时工作时喜欢把一些记录记到自己one note里,所以本人很少写文章,不过最近在工作中踩了一些坑,想来想去还是把一些问题记录在CSDN里跟好,一是方便日后查看,二是也许可能帮助到别人。
我在使用pytorch做一个图像分类的实验,在训练时使用batch_size = 64 在预训练模型上进行训练,在训练期间,模型在train data以及 val data上都有不错的表现,然后当模型训练完成后,在test data上也进行了测试,同样得到了较好的表现。但是在测试单张图片分类时,就发生了奇怪的现象,发现模型精度非常差。所以各种找问题,找原因,最后终于找到原因所在:导致单张图片测试精度变差的原因就是忘记在测试时对模型加入 model.evel() 方法。
说起来感觉比较简单低级的错误,但确实发生在不经意间,究其原因主要是我在test方法上加上了【@torch.no_grad()】的注解,如下:
@torch.no_grad()
def test(self):
pass # 后续任务
因为加上了该注解后,可以使model不在进行梯度计算以及反向传播,但是就是因为加上了该注解使我忽略了BN层的参数,在使用 y = model(x)进行前向计算时,model自动计算了BN层的参数,最终导致精度变差。
最后
以上就是长情绿茶为你收集整理的pytorch图像分类模型在测试时精度变差的全部内容,希望文章能够帮你解决pytorch图像分类模型在测试时精度变差所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复