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

什么是计算图?

从一个例子入手:

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.mzph.cn/news/192367.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用dirmap命令行时报错,提示缺少gevent模块

记得以前是可以的,可能是时间长了重装了系统,引起的。 修复方法。升级pip,然后重新下载安装gevent模块。 具体: python -m pip install --upgrade pip 使用下面命令解决下载慢的问题。 pip config set global.index-url http…

Drools 7 ObjectDataCompiler

ObjectDataCompiler 是用于将一个java 对象填充到template 内生成drl。 实际是转为String对象,父类为DataProviderCompiler要注意对象值为空的处理,如果填充遇到null,会导致rule很奇怪。 测试java 代码如下 public class ObjectDataCompil…

【WPF.NET开发】WPF.NET桌面应用开发概述

本文内容 为何从 .NET Framework 升级使用 WPF 进行编程标记和代码隐藏输入和命令控件布局数据绑定图形和动画文本和版式自定义 WPF 应用 Windows Presentation Foundation (WPF) 是一个与分辨率无关的 UI 框架,使用基于矢量的呈现引擎,构建用于利用现…

LeetCode [中等] 二叉树中序—二叉搜索树中第K小的元素

二叉搜索树中第K小的元素 二叉搜索树具有如下性质: 结点的左子树只包含小于当前结点的数。 结点的右子树只包含大于当前结点的数。 所有左子树和右子树自身必须也是二叉搜索树。 二叉树的中序遍历即按照访问左子树——根结点——右子树的方式遍历二叉树&#x…

图片处理OpenCV IMDecode模式说明【生产问题处理】

OpenCV IMDecode模式说明【生产问题处理】 1 前言 今天售后同事反馈说客户使用我们的图片处理,将PNG图片处理为JPG图片之后,变为了白板。 我们图片处理使用的是openCV来进行处理 2 分析 2.1 图片是否损坏:非标准PNG头部 于是,马…

SHAP(六):使用 XGBoost 和 HyperOpt 进行信用卡欺诈检测

SHAP(六):使用 XGBoost 和 HyperOpt 进行信用卡欺诈检测 本笔记本介绍了 XGBoost Classifier 在金融行业中的实现,特别是在信用卡欺诈检测方面。 构建 XGBoost 分类器后,它将使用 HyperOpt 库(sklearn 的 …

【U8+】用友U8删除固定资产卡片,提示:当前卡片不是本月录入的卡片,不能删除。

【问题描述】 用友U8软件,参照已有账套新建账套的时候,选择结转期初余额。 例如:参照已有账套的2022年新建2023年的账套。 结转期初的时候勾选了固定资产模块, 建立成功后登录23年新的账套后,删除固定资产卡片&#xf…

基于Eclipse+SDK+ADT+DDMS的安卓开发环境完整搭建过程

基于EclipseSDKADTDDMS的安卓开发环境完整搭建过程 1 基本概念2 SDK安装3 Eclipse安装4 ADT插件安装4.1 在线安装(太慢不建议选择)4.2 离线安装(建议选择) 5 配置SDK6 集成安装7 创建安卓虚拟设备8 创建并启动安卓虚拟机8 关于DDM…

node.js出现version `GLIBC_2.27‘ not found的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

nextjs入门

创建项目 npx create-next-app 项目名 体验文件路由 nextjs提供了文件路由的功能, 根据文件系统的目录结构, 可以识别为对应的页面路由 创建页面 首先, 在src下创建pages目录, 然后创建一个about文件(对应about页面)和main/index.js文件(对应首页) pages/main/index con…

c语言:整数与浮点数在内存中的存储方式

整数在内存中的存储: 在计算机内存中,整数通常以二进制形式存储。计算机使用一定数量的比特(bit)来表示整数,比如32位或64位。在存储整数时,计算机使用补码形式来表示负数,而使用原码形式来表示…

【计算机网络学习之路】URL概念及组成

目录 一. URL是什么 二. URL的组成 三. encode和decode 前言 本系列文章是计算机网络学习的笔记,欢迎大佬们阅读,纠错,分享相关知识。希望可以与你共同进步。 本篇讲解使用浏览器不可或缺的部分——URL 一. URL是什么 域名及DNS 我们在…

43 - 什么是数据的强、弱一致性?

说到一致性,其实在系统的很多地方都存在数据一致性的相关问题。除了在并发编程中保证共享变量数据的一致性之外,还有数据库的 ACID 中的 C(Consistency 一致性)、分布式系统的 CAP 理论中的 C(Consistency 一致性&…

Android studio Load error:undefined path variables

android stuido 报错 Load error:undefined path variables Gson is undefined 处理方法: 点击进行Sync Project with Gradle Files

iRDMA流量控制总结 - 5

6.0 Priority Flow Control – Verification带优先级的流量控制 - 验证 6.1 Priority Counters优先级计数器 Priority flow control counters for each interface are available in ethtool. They measure the number of Xon and Xoff (transmit on and off) frames sent and…

Redis——某马点评day02——商铺缓存

什么是缓存 添加Redis缓存 添加商铺缓存 Controller层中 /*** 根据id查询商铺信息* param id 商铺id* return 商铺详情数据*/GetMapping("/{id}")public Result queryShopById(PathVariable("id") Long id) {return shopService.queryById(id);} Service…

文心版吴恩达课程:语义核心(Semantic Kernel)插件的商业应用

文心版吴恩达课程:语义核心(Semantic Kernel)插件的商业应用 Semantic Kernel is an SDK that integrates Large Language Models (LLMs) like OpenAI, Azure OpenAI, and Hugging Face with conventional programming languages like C#, P…

leetcode:225. 用队列实现栈

一、题目 链接:225. 用队列实现栈 - 力扣(LeetCode) 函数原型: typedef struct { } MyStack; MyStack* myStackCreate() void myStackPush(MyStack* obj, int x) int myStackPop(MyStack* obj) int myStackTop(MyStack* obj) …

HTML之实体和标签

HTML之实体和标签 实体标签meta标签语义化标签列表超链接 实体 如果我们需要在网页中书写一些特殊符号&#xff0c;则需要在html中使用【实体】&#xff08;转义符&#xff09; 实体语法&#xff1a; &实体的名字; <!DOCTYPE html> <html lang"en"> …

代码随想录刷题题Day4

刷题的第四天&#xff0c;希望自己能够不断坚持下去&#xff0c;迎来蜕变。&#x1f600;&#x1f600;&#x1f600; 刷题语言&#xff1a;C / Python Day4 任务 ● 24. 两两交换链表中的节点 ● 19.删除链表的倒数第N个节点 ● 面试题 02.07. 链表相交 ● 142.环形链表II 1 …