当前位置: 首页 > news >正文

Pytorch中不会自动传播梯度的操作有哪些?

在 PyTorch 中,某些生成张量的操作本身不会创建与计算图相关联的梯度信息。这些操作通常用于初始化张量,并且默认情况下不需要进行梯度计算。以下是一些常见的不会自动传播梯度的张量生成操作:

  1. 数值初始化操作

    • torch.linspace(): 用于生成等差数列的张量。
    • torch.arange(): 类似于 Python 的 range(),用于生成指定范围内的序列。
    • torch.zeros(), torch.zeros_like(): 用于生成全 0 张量。
    • torch.ones(), torch.ones_like(): 用于生成全 1 张量。
    • torch.full(): 用于创建每个元素都是指定值的张量。
    • torch.empty(), torch.empty_like(): 用于创建未初始化的张量。
  2. 随机初始化操作

    • torch.rand(), torch.rand_like(): 用于生成 0 到 1 范围内服从均匀分布的随机数张量。
    • torch.randn(), torch.randn_like(): 用于生成均值为 0、标准差为 1 的正态分布的随机数张量。
    • torch.randint(), torch.randint_like(): 生成整数随机数张量。
  3. 创建单位矩阵

    • torch.eye(): 用于生成单位矩阵。

这些操作生成的张量默认情况下 requires_grad 属性是 False,因此即使在计算过程中这些张量的值被用作操作数,也不会在反向传播时计算其梯度。

如果需要将这些生成的张量用于需要梯度计算的操作时,需要手动设置 requires_grad=True,例如:

x = torch.linspace(0, 1, steps=10, requires_grad=True)

这样,x 在后续的操作中就会被包含在计算图中,从而能够计算梯度。
但是类似下面:

x = torch.linspace(-2, 2, 100, requires_grad=True) * torch.pi

是及其容易忽略的错误。

http://www.lryc.cn/news/456423.html

相关文章:

  • 【设计模式】软件设计原则——开闭原则里氏替换单一职责
  • 项目完整开发的流程
  • 性能测试学习6:jmeter安装与基本配置/元件/线程组介绍
  • 大数据ETL数据提取转换和加载处理
  • 物理与环境安全技术
  • 手把手教你如何配置好VS Code的WEB基础开发环境(保姆级)
  • 高性能、编译器编写语言、编程语言的高低贵贱
  • Python安装库时使用国内源pip install -i
  • Linux 再入门整理:详解 /etc/fstab 文件
  • 2.8 双绞线、同轴电缆、光纤与无线传输介质
  • OBOO鸥柏:布局于为无人机展厅行产业提供LCD液晶显示终端
  • win10状态栏中 “音量” 符号丢失,而在“打开或关闭系统图标”中音量开关无法调节的解决方法
  • Mysql 学习——项目实战
  • Springboot 整合 logback 日志框架
  • Hugging face简要介绍
  • A股知识答题pk小程序怎么做?
  • 单细胞转录组 —— kb-python 原始数据处理
  • 全同态加密算法概览
  • leetcode 刷题day38动态规划Part07 打家劫舍(198.打家劫舍、213.打家劫舍II、337.打家劫舍III)
  • C0010.Qt5.15.2下载及安装方法
  • 制造企业MES管理系统的应用策略与实施路径
  • Halcon 3D应用 - 胶路提取
  • 【Redis】Redis线程模型
  • Electron构建桌面应用程序,服务于项目的自主学习记录(持续更新...
  • linux Load Average 计算
  • pandas常用数据格式IO性能对比
  • 【D3.js in Action 3 精译_031】3.5.2 DIY实战:在 Observable 平台实现带数据标签的 D3 条形图并改造单元测试模块
  • 华为OD机试真题-字符串分割
  • 编程技巧:提高代码健壮性与可维护性的关键方法(以 Shell 为例)
  • 【无标题】ReadableStream is not defined