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

本文详细介绍了在Ubuntu系统中,基于CUDA 9.2和PyTorch 1.2配置CornerNet环境的过程,包括环境搭建、Corner Pooling编译错误的解决、GPU限制代码修改和模型训练与测试的步骤。文章特别强调了在PyTorch版本升级后编译Corner Pooling时遇到的问题及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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接口的变化,但是怎么改呢?接着看。。<

评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值