PyTorch笔记1--基本概念和Tensor

PyTorch优点

上手快:掌握Numpy和基本深度 学习概念即可上手

代码简洁灵活:用nn.module封装使网络搭建更方便;基于动态图机制,更灵活

Debug方便:和调试Python一样简单

文档规范:http://PyTorch.org/docs/可查各版本文档

资源多:arXiv中的新算法大多都有PyTorch实现

开发者多:GitHub上贡献者已超过1350+

背靠大树:FaceBook维护开发

机器学习模型训练步骤 :数据、模型、损失函数、优化器596665709974460a863e97ae7a1dcab2.png

张量基本概念

张量(torch.Tensor):

        一个多维数组,标量、向量、矩阵的高维拓展,在pytorch中是自动求导的关键

张量的主要属性(8个,4个与梯度求导相关,4个与数据相关):

        data:被包装的tensor

        grab:data的梯度

        grab_fn:创建Tensor的Function,是自动求导的关键

        require_grad:指示是否需要梯度

        is_leaf:指示是否是叶子节点(张量)

        dtype:张量的数据类型

        shape:张量的形状,如(53,3,224,224)

        device:张量所在设备,GPU/CPU,是加速的关键

创建张量:

        一、直接创建:

torch.tensor(
    data,#数据,可以是list,numpy
    dtype=None,#数据类型,默认与data一致
    device=None,#所在设备,cuda/cpu
    require_grad=False,#是否需要梯度
    pin_memory=False#是否存于锁页内存
)
torch.from_numpy(ndarray)
#从torch.from_numpy创建的tensor与原ndarray共享内存

        二、依据数值创建

torch.zeros(#依size创建全0张量
    *size,#张量的形状,如(3,3)、(3,224,224)
    dtype=None,#输出的张量
    device=None,#内存中布局形式,有strided,sparse_coo等
    require_grad=False,#所在设备,gpu/cpu
    pin_memory=False#是否需要梯度
)
torch.zeros_like(#依input形状创建全0张量
    input,#创建与input同形状的全0张量
    dtype=None,#数据类型
    layout=None,#内存中布局形式
    device=None,
    requires_grad=False
)
torch.ones(#依size创建全1张量
    *size,#张量的形状,如(3,3)、(3,224,224)
    dtype=None,#输出的张量
    device=None,#内存中布局形式,有strided,sparse_coo等
    require_grad=False,#所在设备,gpu/cpu
    pin_memory=False#是否需要梯度
)
torch.ones_like(#依input形状创建全1张量
    input,#创建与input同形状的全0张量
    dtype=None,#数据类型
    layout=None,#内存中布局形式
    device=None,
    requires_grad=False
)
torch.full(#依input形状创建自定义张量
    size,#张量的形状,如(3,3)
    fill_value,#张量的值
    dtype=None,
    layout=None,
    device=None,
    requires_grad=False
)

      三、依据概率创建

torch.arange(#创建等差的1维张量
    star=0,#数列起始值
    end,#数列"结束值"
    step=1,#数列公差,默认1
    out=None,
    dtype=None,
    layout=torch.strided,
    device=None,
    requires_grad=False
)
torch.linspace(#创建均分的1维张量
    star=0,#数列起始值
    end,#数列结束值
    steps=100,#数列长度
    out=None,
    dtype=None,
    layout=torch.strided,
    device=None,
    requires_grad=False
)
torch.logspace(#创建对数均分的1维张量
    star=0,#数列起始值
    end,#数列结束值
    steps=100,#数列长度
    base=10.0,#对数函数的底,默认10
    out=None,
    dtype=None,
    layout=torch.strided,
    device=None,
    requires_grad=False
)
torch.eye(#创建单位对角矩阵(2维张量)
    n,#矩阵行数
    m=None,#矩阵列数
    out=None,
    dtype=None,
    layout=torch.strided,
    device=None,
    requires_grad=False
)
torch.normal(#生成正态分布(高斯分布)
    mean,#均值
    std,#标准差
    out=None
)
torch.randn(#生成标准正态分布,同torch_randn_like(),在区间[0,1)上生成均匀分布
    *size,#张量的形状
    out=None,
    dtype=None,
    device=None,
    require_grad=False,
    pin_memory=False
)
torch.randint(#区间[low,high)生成整数均匀分布
    low=0,
    high,
    size,#张量的形状
    out=None,
    dtype=None,
    device=None,
    require_grad=False,
    pin_memory=False
)
torch.randperm(#生成从0到n-1的随机排列
    n,#张量的长度
    out=None,
    dtype=torch.int64,
    layout=torch.strided,
    device=None,
    requires_grad=False
)
torch.bernoulli(#以input为概率,生成伯努利分布(0-1分布,两点分布)
    input,#概率值
    generator=None,
    out=None
)

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值