保姆级pytorch基本数据结构,直接上手就行

614 阅读3分钟
  • Variable 是torch.autograd中的数据类型(之前)

    • 主要用于封装Tensor,进行自动求导
    • data:被包装的Tensor
    • grad:data的梯度
    • grad_fn:创建Tensor的Function,是自动求导的关键
    • requires_grad:指示是否需要梯度
    • is_leaf:指示是否是叶子结点(张量)
  • Pytorch0.4.0版开始,Variable并入Tensor

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

    • 一、直接创建

      • 方法1:torch.tensor()

        • 功能:从data创建tensor
        • data:数据,可以是list,numpy
        • dtype:数据类型,默认与data一致
        • device:所在设备,cuda/cpu
        • requires_grad:是否需要梯度
        • pin_memory:是否存于锁页内存
      • 方法2:torch.from_numpy(ndarray)

        • 功能:从numpy创建tensor
        • 注意事项:从torch.from_numpy创建的tensor于原ndarray共享内存,当修改其中一个的数据,另外一个也被改动
    • 二、依据数值创建

      • 方法1:torch.zeros()

        • 功能:依size创建全0张量
        • size:张量的形状,如(3,3)、(3,224,224)
        • out:输出的张量
        • layout:内存中布局形式,有strided(通常使用),sparse_coo(稀疏张量可能用到)等
        • device:所在设备,gpu/cpu
        • requires_grad:是否需要梯度
      • 方法2:torch.zeros_like()

        • 功能:依input形状创建全0张量
        • intput:创建与intput同形状的全0张量
        • dtype:数据类型
        • layout:内存中布局形式
      • 方法3:torch.ones()
      • 方法4:torch.ones_like()

        • 功能:依input形状创建全1张量
        • size:张量的形状,如(3,3)、(3,224,224)
        • dtype:数据类型
        • layout:内存中布局形式
        • device:所在设备,gpu/cpu
        • requires_grad:是否需要梯度
      • 方法5:torch.full()
      • 方法6:torch.full_like()

        • 功能:依input形状创建全0张量
        • size:张量的形状,如(3,3)
        • fill_value:张量的值
      • 方法7:torch.arange()

        • 功能:创建等差的1维张量
        • 注意事项:数值区间为[start,end),这个区间是半闭半开的,取不了end\
        • start:数列的起始值
        • end:数列的“结束值”
        • step:数列公差,默认为1
      • 方法8:torch.linspace()

        • 功能:创建均分的1维张量
        • 注意事项:数值区间为[start,end]
        • start:数列的起始值
        • end:数列的结束值
        • steps:数列长度
      • 方法9:torch.logspacce()

        • 功能:创建对数均分的1维张量
        • 注意事项:长度为steps,底为base
        • start:数列起始值
        • end:数列结束值
        • steps:数列长度
        • base:对数函数的底,默认为10
      • 方法10:torch.eye()

        • 功能:创建单位对角矩阵(2维张量)
        • 注意事项:默认为方阵
        • n:矩阵的行数
        • m:矩阵的列数
    • 三、依据概率创建

      • 方法1:torch.normal()

        • 功能:生成正态分布(高斯分布)
        • mean:均值
        • std:标准差
        • 四种模式:

          • mean为标量,std为标量
          • mean为标量,std为张量
          • mean为张量,std为标量
          • mean为张量,std为张量
      • 方法2:torch.random()
      • 方法3:torch.randn_like()

        • 功能:生成标准正态分布
        • size:张量的形状
      • 方法4:torch.rand()
      • 方法5:torch.rand_like()

        • 功能:在区间[0,1)上,生成均匀分布
      • 方法6:torch.randint()
      • 方法7:torch.randint_like()

        • 功能:区间[low,high]生成整数均匀分布
        • size:张量的形状
      • 方法8:torch.randperm()

        • 功能:生成从0到n-1的随机排列
        • n:张量的长度
      • 方法9:torch.bernoulli()

        • 功能:以input为概率,生成伯努利分布(0-1分布,两点分布)
        • input:概率值