pytorch图像分类模型在测试时精度变差

因为平时工作时喜欢把一些记录记到自己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层的参数,最终导致精度变差。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值