PyTorch如何使用GPU,训练神经网络时哪些东西可以传到GPU运算

  1. 在 windows10 上面安装 CUDA 和 cuDNN(需要看显卡配置,安装对应的版本)

  2. 使用GPU之前需要安装PyTorch的GPU版本,原来装的pytorch版本是CPU的,而pytorch-cpu与pytorch-GPU不兼容,重新创建一个虚拟环境安装。

以上两部分,可参考 https://www.cnblogs.com/guan-zl/p/12986253.html

  1. GPU的使用

(1)检测是否可以使用GPU

use_gpu = torch.cuda.is_available()
可以使用GPU,use_gpu的值为True,否则为False。

当可以使用GPU,我们不想使用,可以直接赋值use_gpu = False。

(2)使用GPU的三种方式

with torch.cuda.device(1):
	# allocates a tensor on GPU 1
    a = torch.tensor([1., 2.], device=cuda)
  # transfers a tensor from CPU to GPU 1
  b = torch.tensor([1., 2.]).cuda()
   # You can also use ``Tensor.to`` to transfer a tensor:
   b2 = torch.tensor([1., 2.]).to(device=cuda)

这三种方式没什么区别,但都需要先判断是否又GPU才能使用,个人觉得.to(device)更好用,在使用前先使用(1)中的代码判断,后面直接使用use_gpu即可。

(3)在代码中哪些东西需要上传到GPU

(1)判断GPU是否可用

if torch.cuda.is_available():
    device = torch.device('cuda')
    cudnn.benchmark = True
else:
    device = torch.device('cpu')

(2)构建网络时,把网络,与损失函数转换到GPU上

model = CNN().to(device)
loss = nn.CrossEntropyLoss().to(device)

(3)训练网络时,把数据转换到GPU上

x, y = x.to(device), y.to(device)

注,只有tensor类型才能上传到GPU上,故需要对numpy数据进行转换成tensor类型

torch.tensor(x) 或 torch.from_numpy(x)

两者的区别见 https://blog.csdn.net/github_28260175/article/details/105382060

(4)对训练的输出结果有些需要使用np的函数进行操作,需先将输出结果转到CPU上,并转成numpy类型,再使用np的函数
output = (model(x)).cpu().numpy()

链接:https://article.docway.net/it/details/5fcdc3a9f8d82b7c6b30fd10

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值