1.选择适合自己的pytorch进行安装
打开官网,https://pytorch.org/,如下:
这里按自己的需求选择,会生成安装命令,我选择了conda安装,cuda版本10.2,安装命令为:
conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch
测试一下gpu环境是否成功:
import torch
import torchvision
print(torch.cuda.is_available())
返回 Ture
表示pytorch能够正常调用cuda
2.pytorch代码版本升级
pytorch安装好之后发现从github上拿到的是2018年的代码,使用的pytorch版本较低,代码没有及时维护,这时候需要自己调整代码的写法,主要以下几点:
(1)报错:IndexError: invalid index of a 0-dim tensor. Use tensor.item() to convert a 0-dim tensor to a Python
这个报错一般都是在调用update对象时候出现,主要有以下改动
top.update(prec[0])
改为 top.update(prec.data)
loss_val.data[0]
改为 loss_val.data
(2)报错:RuntimeError: view size is not compatible with input tensor‘s size and stride
这个报错一般是在调用view对象时候出现,因为view()需要Tensor中的元素地址是连续的,但可能出现Tensor不连续的情况,所以先用 .contiguous() 将其在内存中变成连续分布:
out = out.view(out.size()[0], -1)
改为 out = out.contiguous().view(out.size()[0], -1)
(3) 报错:TypeError: can’t convert CUDA tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory fi
这个报错一般是在调用numpy时候出现,如果想把CUDA tensor格式的数据改成numpy,需要先将其转换成cpu float-tensor随后再转到numpy格式。 numpy不能读取CUDA tensor 需要将它转化为 CPU tensor
predict.data.numpy()
改为 predict.data.cpu().numpy()