复用别人代码中遇到的问题(pytorch)

1.训练时loss保持一个“看似合理”的固定数值,test时准确率为0。
原因:output和label维度不匹配或output或是label的值为0

2.测试集的准确率始终为0
原因:与问题(1)类似,label或output的值存在问题,有可能是在dataloader里包装的sample时就存在问题。
教训:在dataloader里读取图像的方法尽量少传入类的属性作为参数,这样便于调试。

3.训练时没有问题,测试时“out of memory”
原因:我的网络任务是做图像的分类,因此在测试时,放在cuda上的参数量过大,因此做了如下修改:

#原始
data_var = Variable(data,volatile=True).cuda(async=True)
label_var = Variable(label,volatile=True).cuda(async=True)
#改为如下形式
with torch.no_grad():
	data_var = Variable(data).cuda(async=True)
	label_var = Variable(data).cuda(async=True)

做了上述修改之后发现还是会报out of memory的问题,后来逐行排查时发现可能是由于我想要保存图片名和output的值到一个字典里的时候,直接将cuda上的output这一tensor保存下来,所以导致占用的空间过大(具体是什么过程还不清楚,但可以确定是这一行报错),因此在保存的时候做了如下修改:

#原始
preds[img_name]=output
#修改为
preds[img_name]=output.data.cpu().numpy()
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值