Pytorch系列之——Pytorch的Tensor(张量)

张量的构建

  • Tensor概念
  • Tensor创建一:直接创建
  • Tensor创建二:依据数值创建
  • Tensor创建三:依据概率创建
张量是什么?

张量其实就是一个多维数组,它是标量、向量、矩阵的高维拓展:
Pytorch系列之——Pytorch的Tensor(张量)_第1张图片

Tensor与Variable

Variable是torch.autograd中的数据类型,主要用于封装Tensor,进行自动求导,接下来先来看下torch.autograd.Variable这个数据类型,理解了Variable其实对于理解张量是有帮助的:
Pytorch系列之——Pytorch的Tensor(张量)_第2张图片可以看到,Variable中包含了5个属性:

  • data:表示被包装的Tensor
  • grad:表示data的梯度
  • grad_fn:表示创建Tensor的Function,是自动求导的关键
  • requires_grad:指示是否需要梯度,并不是所有的张量都需要计算梯度,若张量需要计算梯度,那么设置requires_grad=True,反之设置requires_grad=False
  • is_leaf:指示是否是叶子结点(张量)
Tensor

从Pytorch0.4.0版本开始,Variable就并入了Tensor,那么我们来看下torch.Tensor这个数据类型的具体细节:

torch.Tensor主要包含8个数据类型,其中有5个属性上面介绍Variable时已经讲述过了,所以主要介绍一下其余的3个属性:
Pytorch系列之——Pytorch的Tensor(张量)_第3张图片

  • dtype:张量的数据类型,如torch.FloatTensor,torch.cuda.FloatTensor
  • shape:张量的形状,如(64,3,224,224)
  • device:张量所在的设备,GPU/CPU,是加速的关键
张量的创建

一、直接创建
torch.tensor()
功能:从data创建tensor
Pytorch系列之——Pytorch的Tensor(张量)_第4张图片

  • data:数据,可以是list,numpy
  • dtype:数据类型,默认与data的一致
  • device:所在设备,cuda/cpu
  • requires_grad:是否需要梯度
  • pin_memory:是否存于锁页内存

torch.from_numpy(ndarray)
功能:从numpy创建tensor
需要注意的是,从torch.from_numpy创建的tensor与原ndarray共享内存,当修改其中一个的数据,另外一个也将会被改动。
Pytorch系列之——Pytorch的Tensor(张量)_第5张图片二、依据数值创建
torch.zeros()
功能:依size创建全0张量
Pytorch系列之——Pytorch的Tensor(张量)_第6张图片

  • size:张量的形状,如(3,3),(3,224,224)
  • out:输出的张量
  • layout:内存中布局形式,有stride,sparse_coo等
  • device:所在设备,gpu/cpu
  • requires_grad:是否需要梯度

torch.zeros_like()
功能:依input形状创建全0张量

你可能感兴趣的:(PyTorch,机器学习,深度学习)