博客
关于我
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/

    你可能感兴趣的文章
    NSRange 范围
    查看>>
    NSSet集合 无序的 不能重复的
    查看>>
    NT AUTHORITY\NETWORK SERVICE 权限问题
    查看>>
    NT symbols are incorrect, please fix symbols
    查看>>
    ntko web firefox跨浏览器插件_深度比较:2019年6个最好的跨浏览器测试工具
    查看>>
    ntko文件存取错误_苹果推送 macOS 10.15.4:iCloud 云盘文件夹共享终于来了
    查看>>
    ntpdate 通过外网同步时间
    查看>>
    NTP配置
    查看>>
    NUC1077 Humble Numbers【数学计算+打表】
    查看>>
    Nuget~管理自己的包包
    查看>>
    nullnullHuge Pages
    查看>>
    Numix Core 开源项目教程
    查看>>
    NumPy 或 Pandas:将数组类型保持为整数,同时具有 NaN 值
    查看>>
    numpy 数组 dtype 在 Windows 10 64 位机器中默认为 int32
    查看>>
    numpy 数组与矩阵的乘法理解
    查看>>
    numpy 用法
    查看>>
    Numpy 科学计算库详解
    查看>>
    Numpy.ndarray对象不可调用
    查看>>
    Numpy如何使用np.umprod重写range函数中i的python
    查看>>
    numpy数组索引-ChatGPT4o作答
    查看>>