博客
关于我
PyTorch学习笔记01: PyTorch基本概念
阅读量:809 次
发布时间:2019-03-15

本文共 1304 字,大约阅读时间需要 4 分钟。

PyTorch学习笔记01: PyTorch基本概念

张量的简介和创建

张量的概念

PyTorch中的张量是对机器学习中的数组数据进行扩展和操作的基础数据结构。张量在PyTorch中通过torch.tensor()创建,并具有动态计算图求导的特性。每个张量都有一个grad属性,用于存储梯度信息。

张量的创建

PyTorch提供了三类创建张量的方式:

1. 直接创建

  • 使用torch.tensor()torch.from_numpy()创建张量。torch.tensor()可以从Python列表、numpy数组等创建张量。
  • 代码示例:
t = torch.tensor([1, 2, 3], dtype=torch.float32)t = torch.from_numpy(np.array([1, 2, 3])).float()

2. 依数值创建

PyTorch提供了多种函数用于依数值创建张量:

  • 全零张量:torch.zeros()
  • 全一张量:torch.ones()
  • 等差数列:torch.arange()
  • 均匀分布:torch.linspace()
  • 对数均匀分布:torch.logspace()
  • 单位矩阵:torch.eye()

3. 依概率创建

  • 正态分布:torch.normal()
  • 标准正态分布:torch.randn()
  • 均匀分布:torch.rand()
  • 伯努利分布:torch.bernoulli()
  • 排列:torch.randperm()

张量的操作

形态变换

PyTorch提供了多种函数用于对张量进行形态变换:

拼接与切分

  • torch.cat():按维度拼接张量
  • torch.stack():在新维度上拼接张量
  • torch.chunk():按维度切分张量
  • torch.split():按维度切分张量

张量索引

  • torch.index_select():按维度索引张量
  • torch.masked_select():按掩码索引张量

形状变换

  • torch.reshape():改变张量的形状
  • torch.transpose():交换张量的维度
  • torch.t():两维张量转置
  • torch.squeeze():压缩长度为1的维度
  • torch.unsqueeze():扩展张量的维度

计算图与autograde

计算图

计算图是PyTorch用于描述运算的有向无环图,主要由节点和边组成:

  • 节点:表示数据(如张量)
  • 边:表示运算(如加法、乘法)

autograde自动求导

PyTorch通过torch.autograd提供自动求导功能,主要有两个API:

  • torch.autograd.backward():对所有节点求梯度
  • torch.autograd.grad():对指定节点求梯度
  • 反向传播

    在反向传播过程中,非叶子节点的梯度会被释放,为了保留梯度需要手动调用retain_grad()。使用backward()方法进行反向传播。

    注意事项

    • 梯度不会自动清零,需手动清零。
    • 叶子节点的requires_grad默认为True
    • 避免在反向传播前对节点进行in-place操作。

    转载地址:http://rwhlz.baihongyu.com/

    你可能感兴趣的文章
    postman进行http接口测试
    查看>>
    Postman高阶技能:Collection集合批量运行!
    查看>>
    postMessage跨标签页共享数据
    查看>>
    QImage对一般图像的处理
    查看>>
    post为什么会发送两次请求?
    查看>>
    Post表单提交TextArea的值出现转译乱码问题 - Spring MVC处理表单提交
    查看>>
    Power BI 中的 Python 可视化需要什么设置?任何特定的 matplotlib 包版本或系统设置?
    查看>>
    Power BI:如何在 Power Query 编辑器中将 Python 与多个表一起使用?
    查看>>
    power english (3) main text -emotion mastery - focus
    查看>>
    POWER ENGLISH (6) - MODEL
    查看>>
    power english (1) —— passion
    查看>>
    Power English (1) 原文
    查看>>
    power English (3)原文
    查看>>
    POWER ENGLISH(7)- repetition
    查看>>
    SpringBoot中集成SpringBatch详细解析与实战示例(CSV文件读取十万条数据进行业务处理后写入Mysql数据库)
    查看>>
    powerbi 一张表在另外一张表中出现的数量_PowerBi之初步学习笔记
    查看>>
    QGIS怎样设置简体中文以及新建可编辑的多边形的图层
    查看>>
    PowerBuilder 使用自定义事件触发键盘Enter事件
    查看>>
    PowerCreatorCMS UploadResourcePic 任意文件上传漏洞复现
    查看>>
    PowerDesigner 使用的一些技巧(转)
    查看>>