pytorch从ubuntu16.04到win7的迁移(解决)

ps:最近很崩溃,应要求部署要从linux转到win7下。我遇到了关于pytorch两个大问题:windows导致pytorch版本的变换和顺带改变的python版本。

先来看先我安装两个pytorch版本代码的不同:(不管cu版本)

1).pip install http://download.pytorch.org/whl/cu80/torch-0.3.0-cp27-cp27mu-linux_x86_64.whl

从中我们可以获取两个信息:1.torch-0.3.0(ptorch版本)。2.cp27(python2.7)

2).pip install http://download.pytorch.org/whl/cu90/torch-0.4.1-cp35-cp35m-win_amd64.whl(我也想装0.3.0可惜windows下从0.41开始支持,python版本windows下也没python2的版本。)

我们同样能获取两个对照信息:1.torch-0.4.1(ptorch版本)。2.cp35(python3.5)

 

没办法下面硬着头皮改了。一开始还好,报错了网上搜搜大概能解决。但是在跑检测模型的测试的时候就爆出RuntimeError: CUDA error: out of memory的错误当时我就有点懵,主要是因为,在liunx下这个测试模型占的显存仅仅是3G显存就ok了,而我的显卡是一张8G一张11G,不合情理啊。但是当我实时查看显卡内存占用情况发现确实出现了占满显存的情形然后报错。

束手无策,感觉这样下去也不是办法。然后我就去找了相关的关于pytroch0.3到0.4的变换。资料很多但是我在github上找到了一个超好的资料(配合实例):https://github.com/bat67/pytorch-tutorials-examples-and-books/tree/master/0.PyTorch%E7%89%88%E6%9C%AC%E5%8F%98%E5%8C%96%E5%8F%8A%E8%BF%81%E7%A7%BB%E6%8C%87%E5%8D%97

我就贴下总结集体解释的实例需要的可以去细看:

主要区别:

  • Tensors并Variables已合并
  • Tensors支持0维(标量)
  • 弃用volatile标签
  • dtypes,devices和NumPy风格的创作功能
  • 编写device-agnostic代码
  • nn.Module中子模块名称,参数和缓冲区中的新边界约束

下面是修改时遇到的典型:(这里只是测试部分的代码,训练的先不修改)

1.从原来的os.environ['CUDA_VISIBLE_DEVICES']=0,改为 device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

2.相对应的net = net.cuda()改为net = net.to(device)。

3.input = Variable(data, volatile = True).cuda()改为先在for...in...前面加上with torch.no_grad():来替代volatile = True(作用也不会进行反向传播,对于不需要反向传播的情景(inference,测试推断),该参数可以实现一定速度的提升,并节省了显存,因为其不需要保存梯度。这也是之前显存爆掉的原因,在0.4版被移除无效了)同时改为input=data.to(device)。

4.在来说一个平时忽略的python2转python3后,对应numpy库的问题。之前一行定义矩阵的代码没有问题 如output = -1000000 * np.ones((a,b),np.float32)。没有问题,然而转了之后就报TypeError: 'numpy.float64' object cannot be interpreted as an integer这样的错误。一开始我百思不得其解,后来自己尝试用实际例子替代后完全没出现这样的问题,再回过头来想想是不是a,b的数据类型导致的。后来打印出来果然一个<class 'numpy.int32'>,另一个 <class 'float'>。再前面加上b=int(b)之后果然不报错了。从这侧面也看出了python3比python2更加严谨。

在python3版本中的numpy库要求关于矩阵的形状和索引操作的参数必须是整型(有的情况none也ok),其他类型都会报错

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值