Numpy桥—Tensor与numpy的Array的相互转换
对于学过numpy的小伙伴,这个转换还是很好理解的。没有学过的话,可以在这个连接下学习学习,讲得挺详细的。 [http://old.sebug.net/paper/books/scipydoc/numpy_intro.html]
需要注意的是:Torch的Tensor和numpy的array会共享他们的存储空间,修改一个会导致另外的一个也被修改。将numpy的Array转换为torch的Tensor
>>> import torch
>>> a=torch.ones(5)
>>> b=a.numpy()
>>> a
1
1
1
1
1
[torch.FloatTensor of size 5]
>>> b
array([ 1., 1., 1., 1., 1.], dtype=float32)
#比较简单,只需要在torch的后面加上'.numpy()'即可。
- 将torch的Tensor转换为numpy的Array
>>> import numpy as np
>>> a=np.ones(5)
>>> b=torch.from_numpy(a)
>>> a
array([ 1., 1., 1., 1., 1.])
>>> b
1
1
1
1
1
[torch.DoubleTensor of size 5]
- GPU加速计算
先看看支不支持cuda,cuda可以加速计算,像神经网络进行网络训练,如果数据量较大,有cuda的就快多了。
>>>torch.cuda.is_available() #看看是否支持cuda运算
如果为True的话,就可以使用cuda了。
使用CUDA函数来将Tensor移动到GPU上,当CUDA可用时会进行GPU的运算
if torch.cuda.is_available():
x = x.cuda()
y = y.cuda()
x + y