PyTorch张量
前言
张量是一个多维数组,它是标量,向量,矩阵的高维拓展。
一、Tensor与Variable
Variable是torch.autograd中的数据类型,主要用于封装Tensor,进行自动求导。
在pytorch0.4.0版本之后,Variable已经并入了Tensor,不再需要这个数据类型。但功能差不多。
torch.autograd.variable中有:
data:被封装的Tensor
grad:data的梯度
grad_fn:创建Tensor的function,是自动求导的关键
requires_grad:指示是否需要计算梯度
is_leaf:指示是否为叶子结点(张量)
共五个属性
0.4.0版本开始,Variable并入Tensor
torch.Tensor中有:
data:被封装的Tensor
grad:data的梯度
grad_fn:创建Tensor的function,是自动求导的关键
requires_grad:指示是否需要计算梯度
is_leaf:指示是否为叶子结点(张量)
新增属性:
dtype:Tensor的数据类型(32-bit float,64-bit int等)
shape:Tensor的形状,如(64,3,224,224)
device:Tensor所在设备,是cpu还是gpu
四个与数据相关,四个与梯度求导相关
二、创建张量的三种方法
1.直接创建
torch.tensor()
功能:从data创建tensor
data:数据,可以是list,numpy
dtype:数据类型,默认与data一致
device:所在设备,cuda/cpu
requires_grad:是否需要梯度
pin_memory:是否存于锁页内存,通常为false
代码如下(示例):
torch.tensor(
data,
dtype=None,
device=None,
requires_grad=False,
pin_memory=False)
arr=np.ones((3,3))
t=torch.tensor(arr,device='cuda')
print(t)
##########以下为结果
tensor([[1.,1.