装不了 pytorch=0.4.0? ubuntu下 基于 cuda=92 和 pytorch=1.2 配置环境跑通 CornerNet 训练和测试流程 步骤详解(包括GPU限制问题详解)


CornerNet 官方github链接

CornerNet 论文地址

环境配置

写这篇博客原因?

为什么要写这样一篇博客?

一是记录自己的学习过程,二是因为CornerNet是基于pytorch 0.4.0写的,其中的某些C++和Cuda API在1.0之后已经变化,所以在编译corner pooling的时候会遇到问题,真让人头大,不过没关系,这篇博客将教你如何解决该问题。

下载下来官方github代码后,根目录下有这样一个文件:

里面含有跑通CornerNet所需要的的第三方库,但是你仔细看其中的关于cuda和pytorch的第三方库,你会发现,其安装的是基于cuda8.0和pytorch 0.4.0的第三方库,万一你不幸装的是cuda 9.0及以上,难道你为了跑通个CornerNet再去重装cuda吗?虽然这样也可以,但是就有点太麻烦了。


更改conda_packagelist.txt

不过,如果不想重装的话,接着往下看。
在这里插入图片描述
打开conda_packagelist.txt,删除如下四个第三方库链接,然后你可以自己去装最重要的pytroch和torchvision。

https://conda.anaconda.org/caffe2/linux-64/caffe2-cuda8.0-cudnn7-0.8.dev-py36_2018.05.14.tar.bz2

https://repo.continuum.io/pkgs/free/linux-64/cudatoolkit-8.0-3.tar.bz2

https://conda.anaconda.org/pytorch/linux-64/pytorch-0.4.0-py36_cuda8.0.61_cudnn7.1.2_1.tar.bz2

https://conda.anaconda.org/pytorch/linux-64/torchvision-0.2.1-py36_1.tar.bz2


conda下基于conda_packagelist.txt创建新环境

cd进入下载后的cornernet文件夹下:

打开terminal,执行:

conda create --name CornerNet --file conda_packagelist.txt

在这里插入图片描述在这里插入图片描述

至此,cornernet所需要的大部分的第三库已经安装成功。


安装pytorch 1.2 和torchvision

这方面我们要参考pytorch官网:

不知道为什么,在我创建的虚拟环境cornernet中使用pip安装时,虽然是python3环境,但是需要将pip3改为pip,暂时不知道什么原因。

执行如下命令即可:

pip install torch==1.2.0+cu92 torchvision==0.4.0+cu92 -f https://download.pytorch.org/whl/torch_stable.html

在这里插入图片描述

这个装的话,比较快,毕竟是从pytorch官网直接获取安装包。


编译Corner Pooling-(用pytorch=1.x的这里是个大坑,请注意!)

这一步确实遇到了问题,毕竟官方代码是基于pytorch 0.4.0写的,我装的是pytorch 1.2.0,有问题也在意料之中。

按照原始代码直接编译,error

执行:

cd <CornerNet dir>/models/py_utils/_cpools/
python setup.py install --user

问题如下:

src/top_pool.cpp: In function ‘std::vectorat::Tensor top_pool_backward(at::Tensor, at::Tensor)’:
src/top_pool.cpp:44:41: error: could not convert ‘at::CUDA((c10::ScalarType)6)’ from ‘at::DeprecatedTypeProperties’ to ‘c10::IntArrayRef {aka c10::ArrayRef}’
auto max_val = at::zeros(torch::CUDA(at::kFloat), {batch, channel, width});
^
src/top_pool.cpp:45:41: error: could not convert ‘at::CUDA((c10::ScalarType)4)’ from ‘at::DeprecatedTypeProperties’ to ‘c10::IntArrayRef {aka c10::ArrayRef}’
auto max_ind = at::zeros(torch::CUDA(at::kLong), {batch, channel, width});
^
src/top_pool.cpp:57:44: error: could not convert ‘at::CUDA((c10::ScalarType)0)’ from ‘at::DeprecatedTypeProperties’ to ‘c10::IntArrayRef {aka c10::ArrayRef}’
auto gt_mask = at::zeros(torch::CUDA(at::kByte), {batch, channel, width
^
src/top_pool.cpp:58:44: error: could not convert ‘at::CUDA((c10::ScalarType)6)’ from ‘at::DeprecatedTypeProperties’ to ‘c10::IntArrayRef {aka c10::ArrayRef}’
auto max_temp = at::zeros(torch::CUDA(at::kFloat), {batch, channel, width

在这里插入图片描述


初次修改,测试阶段OK,训练阶段不OK

好像是cuda接口的问题,应该是由于pytorch版本的改变,导致了cuda接口的变化,但是怎么改呢?接着看。。

终于让我在github上官方代码的issues上找到了,

只需要在 **/mod

  • 13
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 20
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值