pytorch 之tensor的基础知识

一、 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摞在一起,多维的一般计算的都是矩阵

    来源:咯吱咯吱咕嘟咕嘟

    物联沃分享整理
    物联沃-IOTWORD物联网 » pytorch 之tensor的基础知识

    发表评论