使用pytorch训练好的模型来预测单张照片类别错误率几乎百分百的原因和解决方法

最近得知可以白嫖google和百度的显卡来训练自己的模型,就去看了一下,一看,感觉十分惊奇,他们提供的显卡都是专业级显卡,显卡动辄几万那种,知道了这种好事,为自己显卡太差模型跑不起来烦恼的我肯定要去玩的,先去google搞了下,可惜,google上数据集不好弄,外面的网上传自己的数据集不好弄,于是转投百度的aistudio,将自己的数据集上传,模型跑起来,跑起来非常畅爽,那速度,杠杠的,但是,在使用自己训练好的模型去预测物体的时候,发现问题了,如果我一次预测64张,预测的数据很正常,但是如果一次只预测一张,问题就来了,预测的结果基本是一种类型,这不是扯淡嘛,为了找到问题所在,又是改模型保存方式,又是改变图片读取数量,最后,纠结了这么久,终于找到了问题所在,我们在预测的时候,要加上下面两行代码:

    with torch.no_grad(): # 在测试的时候必须加上这行和下一行代码,否则预测会出问题,这里是防止还有梯度更新这些,而且如果不加这个,后面又没有进行梯度更新的话,可能会报显存不够用的错误,我怀疑是数据没有被清理
        model.eval() # 使用PyTorch进行训练和测试时一定注意要把实例化的model指定train/eval,eval()时,框架会自动把BN和DropOut固定住,不会取平均,而是用训练好的值,不然的话,一旦test的batch_size过小,很容易就会被BN层导致生成图片颜色失真极大!!!!!!
        model(x)
        ........    

终于解决了这个问题,瞬间觉得清爽。

2020 5.5

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值