赞
踩
首先,确认pytorch是GPU版本,然后编写时候传入的量应该为Tensor类型。
- import torch
- x=torch.Tensor([[2,5],[1,3]])
- y=torch.Tensor([[2],[5]])
- print('x',x.cuda())
- print('y',y.cuda())
x.cuda()实现了将数据拷贝到GPU上,并且显示了设备deice是0号显卡
- z=x.mm(y)
- print('z',z)
torch.mm是两个矩阵相乘,即两个二维的张量相乘,如下面的例子
- mat1 = torch.randn(2,3)
- print("mat1=", mat1)
-
- mat2 = torch.randn(3,2)
- print("mat2=", mat2)
-
- mat3 = torch.mm(mat1, mat2)
- print("mat3=", mat3)
运算后的结果传入到了CPU中。(默认不显示device为CPU).
但也不全是这样,具体可能应该查看一下,如做QR分解:
- A=torch.Tensor([[2,5],[1,3]])
- print('A cpu',A)
- A = A.cuda()
- print('A cuda',A)
- q, r = torch.qr(A)
- print('q',q)
- print('q',r)
这个时候q和r在GPU里,如果想传入到CPU中,只需q=q.cpu() r=r.cpu()即可。
print('x',x.cuda().cpu())1
用这种方法数据就传送了回来。总结一下, .cuda() 将CPU的数据传送给GPU,而.cpu()将GPU中的数据传送给CPU
print('x,cuda2numpy:',x.cuda().numpy())
会报错,应该先转换为cpu中再转换为numpy
TypeError: can’t convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.
print('x,cuda2numpy:',x.cuda().cpu().numpy())
- import torch
- x=torch.Tensor([[2,5],[1,3]])
- print('x,tensor:',x)
- print('x,cuda:',x.cuda())
- print('x,numpy:',x.numpy())
- print('x,numpy2tensor:',torch.Tensor(x.numpy()))
- print('x,numpy2tensor2:',torch.from_numpy(x.numpy()))
- print('x,cuda2numpy:',x.cuda().cpu().numpy())
- print (torch.cuda.device_count())
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。