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

Pytorch使用手册—自定义函数的双重反向传播与自定义函数融合卷积和批归一化(专题五十二)

1. 使用自定义函数的双重反向传播

有时候,在反向计算图中运行两次反向传播是有用的,例如计算高阶梯度。然而,支持双重反向传播需要对自动求导(autograd)有一定的理解,并且需要小心处理。支持单次反向传播的函数不一定能够支持双重反向传播。在本教程中,我们将展示如何编写一个支持双重反向传播的自定义自动求导函数,并指出一些需要注意的事项。

在编写一个支持两次反向传播的自定义自动求导函数时,了解自定义函数中的操作何时被自动求导记录、何时不被记录,以及最重要的是,save_for_backward 如何与这些机制配合工作,是非常关键的。

自定义函数以两种方式隐式影响梯度模式:

  1. 在前向传播期间,自动求导不会记录在前向函数中执行的任何操作的计算图。当前向传播完成时,自定义函数的反向函数将成为每个前向输出的 grad_fn。

  2. 在反向传播期间,如果指定了 create_graph,自动求导会记录用于计算反向传播的计算图。
    接下来,为了理解 save_for_backward 如何与上述机制交互,我们可以通过几个示例来探讨。

1.1保存输入

考虑这个简单的平方函数。它保存了一个输入张量以便用于反向传播。双重反向传播会在 autograd 能够记录反向传播中的操作时自动


http://www.kler.cn/a/593777.html

相关文章:

  • 【鸿蒙开发】Hi3861学习笔记- OLED示例
  • 【“缘起”:万物依条件而生】
  • 【原创】python授权加密
  • 12、STL中的multiset使用方法
  • Excel 小黑第18套
  • C++11新增内容详解(三)
  • 软件测试--黑马程序员
  • ABC395题解
  • 浅谈canal实例 在docker里面安装canal镜像 Canal监听MySQL数据库变更并同步更新Redis和Elasticsearch 示例
  • 共筑智慧城市新生态!YashanDB与荣科科技完成兼容互认证
  • Hive高频SQL及典型应用场景总结
  • 【Pandas】pandas Series plot
  • STC89C52单片机学习——第28节: [12-2] AT24C02数据存储秒表(定时器扫描按键数码管)
  • 外星人入侵-Python-三
  • C++学习之nginx+fastDFS
  • 深入解析 Redis 原理:架构、数据结构与高效存储
  • 基于开源模型的微调训练及瘦身打造随身扫描仪方案__用AI把手机变成文字识别小能手
  • 【Vue3】01-vue3的基础 + ref reactive
  • Pygame实现记忆拼图游戏14
  • 实时数仓和离线数仓