一、 PyTorch中,Tensortensor

  • 首先,我们需要明确一下,torch.Tensor()是python,更明确地说,是默认张量类型torch.FloatTensor()的别名,torch.Tensor([1,2])会调用Tensor类的构造函数__init__,固定地生成单精度浮点类型的张量
>>> a=torch.Tensor([1,2])
>>> a.type()
'torch.FloatTensor' #生成单精度浮点类型的张量。
  • torch.tensor()仅仅是python函数:https://pytorch.org/docs/stable/torch.html
    #torch.tensor ,函数原型是:
torch.tensor(data, dtype=None, device=None, requires_grad=False)
  • 其中data可以是:list, tuple, NumPy ndarray, scalar和其他类型。
    torch.tensor会从data中的数据部分做拷贝(而不是直接引用),根据原始数据类型生成相应的torch.LongTensor、torch.FloatTensor和torch.DoubleTensor张量。
>>> a=torch.tensor([1,2])
>>> a.type()
'torch.LongTensor'
>>> a=torch.tensor([1.,2.])
>>> a.type()
'torch.FloatTensor'
>>> a=np.zeros(2,dtype=np.float64)
>>> a=torch.tensor(a)
>>> a.type()
'torch.DoubleTensor'
  • 在PyTorch中,Tensortensor都能用于生成新的张量:
>>> a=torch.Tensor([1,2])
>>> a
tensor([1., 2.])
>>> a=torch.tensor([1,2])
>>> a
tensor([1, 2])
>>> a=torch.tensor(1)
>>> a
tensor(1)
>>> a.type()
'torch.LongTensor'
>>> a=torch.Tensor(1) 
>>> a
tensor([0.])
>>> a.type()
'torch.FloatTensor'
>>> a=torch.Tensor(3) # 3因为是标量,所以作为size
>>> a
tensor([0., 0., 0.])
>>> a.type()
'torch.FloatTensor'
  • 可见,Tensor(1)1是标量,标量作为size
    传入的,Tensor(3)则生成的是size为3的单精度浮点型张量。把a=torch.Tensor(1)改成a=torch.Tensor([1]),a就是一个数值为1的张量了。
  • 一定要充分理解张量!对于我们理解构建计算图和自动求导,反向传播等应用有重要帮助。
    在PyTorch中,torch.Tensor类是存储和变换数据的重要工具,相比于Numpy,Tensor提供GPU计算和自动求梯度等更多功能,在深度学习中,我们经常需要对函数求梯度(gradient)。PyTorch提供的autograd包能够根据输入和前向传播过程自动构建计算并执行反向传播

二、 Tensor几种形式

在这里插入图片描述
1、scalar 标量

在这里插入图片描述
2、vector 向量
如一个人有三个指标:身高体重性别 组成一个一个值的集合,一个向量
在这里插入图片描述
3、matrix 矩阵
很多个vector摞在一起,多维的一般计算的都是矩阵

在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐