写在前面

之前模型的识别率一直上不去,所以我一直在看我的代码和公式,真的找不出问题来,于是我发现了新手从头开始写模型的坏处,那就是调试起来实在是太麻烦了,远没有带框架的程序调试起来方便.

在多种模型框架之间徘徊了一段时间之后,我最终选择了pytorch,因为他能兼容numpy,使用起来也较为简单,那么这篇文章我就主要分享pytorch环境的安装以及联合GPU的调试.

pytorch环境安装

我是用conda安装的pytorch,命令如下:

conda install torch
conda install pytorch
conda install torchvision

但是我在安装的时候终端报了这个错误:

仔细看这个报错的信息,看起来是缺少了cudatoolkit包,于是我去查找了相关信息搞明白了GPU,cuda,GPU驱动之间的关系,如果没有GPU驱动的话系统是识别不到GPU的,cuda则是GPU的运行框架,那么pytorch是基于cuda实现的GPU加速的,所以在安装上面几个工具包之前需要安装cudatoolkit.

安装完成cudatoolkit之后再安装其他几个pytorch包即可成功.

至此基本的pytorch环境安装就完成了,接下来就开始环境的测试了.

pytorch环境测试

我们先来测试一下pytorch环境,我用的是jupyter notebook,首先导入必要的工具包:

from __future__ import print_function
import torch
import numpy as np
import  time

然后测试本地GPU的环境的:

ngpu= 1
# Decide which device we want to run on
device = torch.device("cuda:0" if (torch.cuda.is_available() and ngpu > 0) else "cpu")
print("driver:",device)
print("GPU_beta: ",torch.cuda.get_device_name(0))

可以得到如下图所示的结果:

接下来就是测试pytorch调用GPU相关信息了,测试程序如下:

# 查看gpu信息
is_cuda = torch.cuda.is_available()
print(if_cuda)

# GPU 的数量
gpu_cnt = torch.cuda.device_count()
print("gpu_cnt=",gpu_cnt)

# 2,将tensor在gpu和cpu间移动
tensor = torch.rand((100,100))

time0 = time.time()
tensor_gpu = tensor.to("cuda:0")
print("time: %.2f, tensor_gpu0 %s" % (time.time()-time0, tensor_gpu.device))

time0 = time.time()
tensor_gpu = tensor.to("cuda:1")
print("time: %.2f, tensor_gpu1 %s" % (time.time()-time0, tensor_gpu.device))


print(tensor_gpu.is_cuda)
tensor_cpu = tensor_gpu.to("cpu") 
print(tensor_cpu.device)

得到如下结果: