目录

一、概述

二、原理

2.1 前向模式

2.2 后向模式

2.3 前向 VS 反向

三、Pytorch自动微分举例

四、Ref


记录自动微分的知识点。

一、概述

计算机实现微分功能, 有以下四种方式:

  • 手工计算出微分, 然后编码进代码
  • 数值微分 (numerical differentiation)
  • 符号微分 (symbolic differentiation)
  • 自动微分

二、原理

所有的数值计算都是有限的基本运算组成的;

基本运算的导数形式是已知的;

自动微分通过链式法则将数值计算的各部分导数组合成整体的导数;

自动微分有两种形式

  • 前向模式 (forward mode)
  • 反向模式 (reverse mode)

2.1 前向模式

前向模式是在计算图前向传播的同时计算微分。

2.2 后向模式

反向模式需要对计算图进行一次正向计算, 得出输出值,再进行反向传播。

2.3 前向 VS 反向

前向模式的一次正向传播能够计算出输出值以及导数值, 而反向模式需要先进行正向传播计算出输出值, 然后进行反向传播计算导数值,所以反向模式的内存开销要大一点, 因为它需要保存正向传播中的中间变量值,这些变量值用于反向传播的时候计算导数。

  • 当输出的维度大于输入的时候,适宜使用前向模式微分;
  • 当输出维度远远小于输入的时候,适宜使用反向模式微分。

三、Pytorch自动微分举例

四、Ref

  • Automatic Differentiation in Machine Learning: a Surve
  • 自动微分简介 - 张洪滨 - 20210120 - PLCT实验室

自动微分 ​​​​​​​​​​​​​​Automatic Differentiation相关推荐

  1. 如何在python中表示微分_Python实现自动微分(Automatic Differentiation)

    什么是自动微分 自动微分(Automatic Differentiation)是什么?微分是函数在某一处的导数值,自动微分就是使用计算机程序自动求解函数在某一处的导数值.自动微分可用于计算神经网络反向 ...

  2. 自动微分(Automatic Differentiation)

    目录 什么是自动微分 手动求解法 数值微分法 符号微分法 自动微分法 自动微分Forward Mode 自动微分Reverse Mode 参考引用 现代深度学习系统中(比如MXNet, TensorF ...

  3. 自动微分(Automatic Differentiation)简介

    现代深度学习系统中(比如MXNet, TensorFlow等)都用到了一种技术--自动微分.在此之前,机器学习社区中很少发挥这个利器,一般都是用Backpropagation进行梯度求解,然后进行SG ...

  4. 计算机求导方法:自动微分(Automatic Differentiation)

    目录 1 Manual Differentiation (手动微分) 1.1 计算方法 1.2 缺陷 2 Symbolic Differentiation (符号微分) 2.1 计算方法 2.2 缺陷 ...

  5. 自动微分(Auto differentiation)

    1.自动微分是干什么的: 自动微分现在已经是深度学习框架的标配,我们写的任何模型都需要靠自动微分机制分配模型损失信息,从而更新模型.简言之,就是在模型更新计算梯度的时候会用到自动微分. 在数学和计算机 ...

  6. 深度学习利器之自动微分(2)

    深度学习利器之自动微分(2) 文章目录 深度学习利器之自动微分(2) 0x00 摘要 0x01 前情回顾 0x02 自动微分 2.1 分解计算 2.2 计算模式 2.3 样例 2.4 前向模式(For ...

  7. 【自动微分原理】具体实现方式

    第一篇自动微分原理文章中我们大概初步谈了谈从手动微分到自动微分的过程,第二篇自动微分正反模式中深入了自动微分的正反向模式具体公式和推导. 实际上第二章了解到正反向模式只是自动微分的原理模式,在实际代码 ...

  8. 深度学习利器之自动微分(1)

    深度学习利器之自动微分(1) 文章目录 深度学习利器之自动微分(1) 0x00 摘要 0.1 缘起 0.2 自动微分 0x01 基本概念 1.1 机器学习 1.2 深度学习 1.3 损失函数 1.4 ...

  9. 【自动微分原理】01. 自动微分的原理介绍

    自动微分原理 自动微分(Automatic Differentiation,AD)是一种对计算机程序进行高效准确求导的技术,一直被广泛应用于计算流体力学.大气科学.工业设计仿真优化等领域.而近年来,机 ...

最新文章

  1. Uncode系列开源组件简介
  2. Linux学习总结(四十七)NFS服务配置 上篇
  3. python中判断列表数据类型_浅谈Python数据类型判断及列表脚本操作
  4. Oracle 11g Dataguard 物理备库配置(四)之broker snapshot standby测试
  5. Mysql大数据中表分区的应用
  6. 709. 转换成小写字母 golang 字符串处理
  7. 变形监测期末复习_材料力学复习题
  8. python爬虫中文乱码_Python 爬虫过程中的中文乱码问题
  9. Java学习笔记_180704_final和static关键字
  10. python要学多久可以找到工作-自学Python的高效方法,学Python多久能找到工作?
  11. [EMNLP18]用序列标注来进行成分句法分析
  12. Atitit 项目管理优化体系图 第4章 项目整合管理 开始 计划 执行 监控 变更 结束 第5章 项目范围管理  SOW工作说明书 成员通讯录 wbs大概模块级别 第6章 项目时间
  13. keil函数和变量无法跳转到定义处的原因有哪些
  14. 如何在uni-app中使用vant组件?最细教学,还看不懂你来捶我
  15. 思科模拟器之端口聚合技术
  16. git学习笔记(三)—— 远程仓库
  17. 安卓模拟器绕过模拟器检测正常用电脑玩手机游戏的最好解决方法
  18. 关于eclipse无法连接手机调试问题
  19. 数据库分类,市场上常见数据库
  20. 霍尔传感器及其在BLDC电机上的应用

热门文章

  1. Java线性代数库jblas的应用举例
  2. linux安装fcitx中文输入法,解决没有候选项的问题(debian10)
  3. 一招教你快速学会Linux ssh连接免密登录
  4. C语言中可以用字符串常量来,C语言字符串详解
  5. dubbo服务治理中间件
  6. python实现逻辑回归算法_逻辑回归算法的实现
  7. git commit 模板设置
  8. 在List循环中添加Map导致值被覆盖
  9. Android实现ScrollView顶部布局上滑缩小,下滑恢复
  10. 分数比较(选择结构)