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

深度学习记录--计算图(前向后向传播)

什么是计算图?

从一个例子入手:

J=3(a+b*c) 

u=b*c

v=a+u

J=3*v

将函数J的计算用流程图表示出来,这样的流程图被称为计算图

简单来说,计算图是用来显示每个变量间的关系的一种图

两种传播方式

计算图有两种传播方式:前向传播 和 后向传播

什么是前向传播?

还是以函数J为例,前向传播就是将计算函数J的值的每一个过程表示出来,类似分步计算

什么是后向传播? 

后向传播就是从最后一个方框开始,逐步向前求最终输出变量(FinalOutput Variable)对普通变量(variable)的导数,记为:\frac{\mathrm{d} (FinalOutput Variable) }{\mathrm{d} (var)} ,在函数J的例子中,最终输出变量是变量J的值,所以导数写为:\frac{\mathrm{d} J }{\mathrm{d} (var)} ,在编程代码中,为了简便,通常将导数记作:d (var) ,当我们求出J对所有普通变量的导数后,我们也就清楚了每个变量var对于J变化的影响程度,同时,这些导数也可以用来更新变量(即梯度下降法),方便进行迭代计算

后向传播的计算方法

简要来说,就是求导

但是,我们可以利用链式法则(chain rule)来简化计算

比如:当我们求完 ^{\frac{\mathrm{d} J }{\mathrm{d} v}} 之后,之后我们要求 \frac{\mathrm{d} J }{\mathrm{d} u} ,可以进行拆分,拆分成:\frac{\mathrm{d}J }{\mathrm{d} v}\frac{\mathrm{d} v }{\mathrm{d} u} , 这样我们只需要求 \frac{\mathrm{d} v }{\mathrm{d} u} ,并将上一次求出的 ^{\frac{\mathrm{d} J }{\mathrm{d} v}} 代入即可求出 \frac{\mathrm{d} J }{\mathrm{d} u} 

同理之后每个导数都可以拆分成两个导数,进行简化运算


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

相关文章:

  • Vue学习记录03
  • 电脑长期不用,开不了机怎样解决
  • 向潜在安全信息和事件管理 SIEM 提供商提出的六个问题
  • 第三百二十三节 Java线程教程 - Java同步器
  • MFC中Picture Control控件显示照片的几种方式
  • 动态内存管理(c语言)
  • 最新AI智能写作回答系统源码 附完整的搭建教程
  • java学习part29线程通信
  • 锐捷EWEB网管系统 RCE漏洞复现
  • oracle sql相关语法
  • Docker的常用基本命令(基础命令)
  • 在Windows中如何知道当前cmd的python解释器来自哪个位置
  • 在 ArcGIS 软件中添加左斜宋体(东体)的方法与步骤
  • 管理类联考-性质
  • 无人机助力电力设备螺母缺销智能检测识别,python基于YOLOv7开发构建电力设备螺母缺销小目标检测识别系统
  • C++作业2
  • 编写高质量Python (第26条) 用 functools.wraps 定义函数装饰器
  • AIGC: 关于ChatGPT中token和tiktoken工具
  • uniapp 微信小程序连接蓝牙卡死
  • 前端打包添加前缀
  • wordpress路径怎么优化?wordpress伪静态怎么做?
  • Group normalization是什么
  • 消息队列好文收集
  • GnuCash macos 设置中文的方法
  • TwinCAT3一个PLC设备里多个程序工程之间通讯
  • 数据结构算法-冒泡排序算法