zoukankan      html  css  js  c++  java
  • 张量的创建

    Pytorch框架学习笔记

    一、张量的创建

    Code is Power!


    ​ ✍此系列文章为Pytorch框架学习笔记。

    目录

    Tensor概念

    ​ 张量是一个多维数组,是标量、向量、矩阵的高维拓展。

    Tensor与Variable

    ​ 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,是加速的关键

    Torch的数据类型:

    Data type

    dtype

    CPU tensor

    GPU tensor

    32-bit floating point

    torch.float32 or torch.float

    torch.FloatTensor

    torch.cuda.FloatTensor

    64-bit floating point

    torch.float64 or torch.double

    torch.DoubleTensor

    torch.cuda.DoubleTensor

    16-bit floating point

    torch.float16 or torch.half

    torch.HalfTensor

    torch.cuda.HalfTensor

    8-bit integer (unsigned)

    torch.uint8

    torch.ByteTensor

    torch.cuda.ByteTensor

    8-bit integer (signed)

    torch.int8

    torch.CharTensor

    torch.cuda.CharTensor

    16-bit integer (signed)

    torch.int16 or torch.short

    torch.ShortTensor

    torch.cuda.ShortTensor

    32-bit integer (signed)

    torch.int32 or torch.int

    torch.IntTensor

    torch.cuda.IntTensor

    64-bit integer (signed)

    torch.int64 or torch.long

    torch.LongTensor

    torch.cuda.LongTensor

    Boolean

    torch.bool

    torch.BoolTensor

    torch.cuda.BoolTensor

    ​ 其中用的比较多的有torch.float,卷积层的权值,数据预处理后都默认为torch.float; torch.long,图像的标签和交叉熵的损失函数一般都用的torch.long

    Tensor 创建的三种方式

    直接创建
    • torch.tensor()

    data: 数据,可以是list, numpy

    dtype: 数据类型,默认与data的一致。

    device: 所在设备

    requires_grad: 是否需要梯度

    pin_memory: 是否存于锁页内存。一般设置为False

    • torch.from_numpy(ndarray)

    需要注意的是从torch.from_numpy创建的tensor与原ndarray共享内存

    依据数值创建

    全零填充:

    • torch.zeros()

    size: 张量大小

    out: 输出张量

    layout: 内存布局

    device: 设备

    requires_grad: 是否需要计算梯度

    • torch.zeros_like()

    input: 创建与input同形状的全零张量

    dtype: 数据类型

    layout: 内存布局,稀疏或者稠密

    此外,还有创建全一,自定义填充的张量:

    • torch.ones()

    • torch.ones_like()

    • torch.full()

    • torch.full_like()

    创建等差张量:

    • torch.arrange()

    start: 起始

    end: 终止, 左闭右开

    step: 步长

    • torch.linspace()

    start: 起始

    end: 终止

    steps: 一维张量长

    创建对数均分数列:

    • torch.logspace()

    start: 起始

    end: 终止

    steps: 一维张量长

    base: 对数函数的底,默认为10

    创建对角矩阵:

    • torch.eye()

    n: 矩阵函数

    m: 矩阵列数

    依据概率创建

    正态分布:

    • torch.normal()

    mean: 均值

    std: 标准差

    size: 指定输出张量的大小,在mean和std均为标量时,需要指出。

    out: 输出张量

    • torch.randn() 标准正态分布
    • torch.randn_like()

    均匀分布:

    • torch.rand() 零到一上采样,指定size
    • torch.randn_like()
    • torch.randint() 在指定区间上采样,指定size
    • torch.randint_like()

    生成0到n-1的随机排列,用以生成随机索引:

    • torch.randperm() 错排

    n: 张量的长度

    伯努利分布:

    • torch.bernoulli()

    p: 概率值

  • 相关阅读:
    关于debug和release 以及new 和delete
    关于new 和delete
    构造函数为什么不能是虚函数
    大端小端【转载】
    “error LNK1169: 找到一个或多个多重定义的符号”的解决方法(转载)
    memset memcpy函数
    漫谈递归
    scanf 和cin 的区别
    enum枚举类型 的用法
    关于浮点数和字面值常量 的使用—— 学习汇编的重要性
  • 原文地址:https://www.cnblogs.com/hwahe/p/14272649.html
Copyright © 2011-2022 走看看