关于Tensor和Numpy
PyTorch的官方介绍是一个拥有强力GPU加速的张量和动态构建网络的库,其主要构建是张量,所以可以把PyTorch当做Numpy来用,Pytorch的很多操作好比Numpy都是类似的,但是其能够在GPU上运行,所以有着比Numpy快很多倍的速度。
使用下述代码可以将numpy ndarray转换到tensor数据类型
import numpy as np
import torch
# 创建一个numpy ndarray size=10*20
a = np,random.randn(10,20)
# 我们可以使用两种方式将numpy的ndarray转换到tensor上
pytorch_tensor1 = torch.Tensor(a)
pytorch_tensor2 = torch.from_numpy(a)
同样,我们也可以将tensor转换到ndarray
# 此方法只对位于CPU上的tensor有效
numpy_ndarray = pytorch_tensor.numpy()
#如果位于GPU上,需要采用如下代码
numpy_ndarray = pytorch_tensor.cpu().numpy()
Tensor放到GPU上
pytorch中的tensor相对于numpy的最大区别就是可以将Tensor放在GPU上进行计算,这样可以极大地加快运算速度。
# 第一种方式是定义cuda数据类型
gpu_tensor = torch.randn(10,20).type(torch.cuda.FloatTensor)
# 第二种方式更简单,推荐使用
gpu_tensor = torch.randn(10,20).cuda(0) # 将tensor放到第一个GPU上
gpu_tensor = torch.randn(10,20).cuda(1) # 将tensor放到第二个GPU上
使用第一种方式将tensor放到GPU上的时候会将数据类型转换成定义的类型,而是用第二种方式能够直接将tensor放到GPU上,类型跟之前保持一致
推荐在定义tensor的时候就明确数据类型,然后直接使用第二种方法将tensor放到GPU上
Tensor的一些属性
print(pytorch_tensor1.shape)
#获取张量的尺寸
# 得到tensor的数据类型
print(pytorch_tensor1.type())
print(pytorch_tensor1.d