我是靠谱客的博主 长情绿茶,最近开发中收集的这篇文章主要介绍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层的参数,最终导致精度变差。

最后

以上就是长情绿茶为你收集整理的pytorch图像分类模型在测试时精度变差的全部内容,希望文章能够帮你解决pytorch图像分类模型在测试时精度变差所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部