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

1. 在 windows10 上面安装 CUDA 和 cuDNN

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

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

3. 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()
    # a.device and b.device are device(type='cuda', index=1)
 
    # You can also use ``Tensor.to`` to transfer a tensor:
    b2 = torch.tensor([1., 2.]).to(device=cuda)
    # b.device and b2.device are device(type='cuda', index=1)

#这三种方式没什么区别,但都需要先判断是否又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数据进行转换成rensor类型
# 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()

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值