在求损失函数关于权重参数的梯度的时候,使用数值微分在上一篇的最后有提到,很占CPU和耗时,所以一般都使用高效的误差反向传播法
数值微分的作用一般就是用来检验误差反向传播法是否正确,因为数值微分比较简单不容易出错,相对的误差反向传播复杂很多,所以用来检测误差是否很小,确保误差反向传播法是正确的。
        使用计算图来表示,会帮助我们更容易理解,我们举一个例子:张三买两个瓜,10元一个,其中消费税是10%,求需要支付的金额?答案很简单 2*10*(1+10%)=22元,求这个答案的过程叫做正向传播
现在我们反过来想知道瓜的价格上涨会在多大程度上影响最终的支付金额,也就是求“支付金额关于瓜的价格的导数”,如果上涨1元,最终将支付的金额会增加多少?如下图:

也就是说涨价1元,需要多支付2.2元,这个2.2就是通过计算图的反向传播求来的。

class MulLayer:'''乘法层的处理[z=x*y]forward()正向传播保存x,y的值backward()从上游传来的导数乘以正向传播的翻转值,然后传给下游'''def __init__(self):self.x=Noneself.y=Nonedef forward(self,x,y):self.x=xself.y=yout=x*yreturn outdef backward(self,dout):dx=dout*self.y#翻转值dy=dout*self.xreturn dx,dy
melon_price=10
melon_num=2
tax=1.1melon_layer=MulLayer()
tax_layer=MulLayer()
melonPrice=melon_layer.forward(melon_price,melon_num)
money=tax_layer.forward(melonPrice,tax)
print(money)#22dprice=1
dmelon_price,dtax=tax_layer.backward(dprice)
dmelonPrice,dmelonNum=melon_layer.backward(dmelon_price)
print(dmelonPrice,dmelonNum,dtax)#2.2 11.0 20

现在在这个基础上再买3瓶酒,每瓶酒200元,消费税一样,现在需要支付多少?支付金额对应的价格、个数、消费税的导数分别是多少?此时相当于多了一个加法层,将瓜钱和酒钱相加,加法节点传给下游的导数是不变的:

class AddLayer:def __init__(self):passdef forward(self,x,y):out=x+yreturn outdef backward(self,dout):dx=dout*1dy=dout*1return dx,dy

误差反向传播法(一)【计算图】相关推荐

  1. 深度学习之学习笔记(九)—— 误差反向传播法

    误差反向传播法() 对神经网络模型而言,梯度下降法需要计算损失函数对参数的偏导数,如果用链式法则对每个参数逐一求偏导,这是一个非常艰巨的任务!这是因为: 模型参数非常多--现在的神经网络中经常会有上亿 ...

  2. 深度学习入门|第5章 误差反向传播法(二)

    误差反向传播法 前言 此为本人学习<深度学习入门>的学习笔记 四.简单层的实现 本节将用 Python 实现前面的购买苹果的例子.这里,我们把要实现的计算图的乘法节点称为"乘法层 ...

  3. 深度学习入门-基于python的理论与实现(五)误差反向传播法

    目录 回顾 1 计算图 1.1局部计算 1.2 计算图的优点是什么 1.3 反向传播的导数是怎么求? 1.3.1加法节点的反向传播 1.3.2 乘法节点的反向传播 1.3.3 购买苹果的反向传播 1. ...

  4. 误差反向传播法小练习(鱼书)

    下载鱼书: hi,这是我用百度网盘分享的内容~复制这段内容打开「百度网盘」APP即可获取  链接:https://pan.baidu.com/s/1RKigRDqzmh4GAK1WEnA3gQ  提取 ...

  5. 神经网络之误差反向传播法

    1.计算图:将计算过程用数据结构图表示,通过多个节点和边表示,节点用O表示,O中是计算内容,将计算的中间结果写在箭头上方,表示各个节点的计算结果从左向右传递.用计算图解题的流程即:①构建计算图:②在计 ...

  6. 深度学习——误差反向传播法

    前言 通过数值微分的方法计算了神经网络中损失函数关于权重参数的梯度,虽然容易实现,但缺点是比较费时间,本章节将使用一种高效的计算权重参数梯度的方法--误差方向传播法 本文将通过①数学式.②计算图,这两 ...

  7. 深度学习入门-误差反向传播法(人工神经网络实现mnist数据集识别)

    文章目录 误差反向传播法 5.1 链式法则与计算图 5.2 计算图代码实践 5.3激活函数层的实现 5.4 简单矩阵求导 5.5 Affine 层的实现 5.6 softmax-with-loss层计 ...

  8. 【深度学习的数学】2×3×1层带sigmoid激活函数的神经网络感知机对三角形平面的分类训练预测(绘制出模型结果三维图展示效果)(梯度下降法+最小二乘法+激活函数sigmoid+误差反向传播法)

    文章目录 训练数据 数据示意 训练数据生成及绘制三维图像代码 训练数据三维图像 搭建神经网络结构 网络结构 利用梯度下降法和误差反向传播法计算损失函数损失值 代码 [灾难降临]代码出现严重问题,已将其 ...

  9. 误差反向传播法(二)【神经网络以层的方式实现】

    我们来看激活函数层的实现,对于激活函数,大家初学神经网络的时候就经常听到,准确来说是在接触感知机的时候熟悉的,它是进入神经网络大门的钥匙,是现代神经网络快速发展的源头. ReLU层(Rectified ...

最新文章

  1. 【BZOJ 3879】SvT
  2. 深度学习 | 反卷积/转置卷积 的理解 transposed conv/deconv
  3. svn 怎么直接同步指定服务器的某个文件夹
  4. 生成器和生成器表达式
  5. 如何将图片中的一个任意四边形区域的图像转化为矩形【附源码】
  6. 【参与开源】J2EE开源项目JEECG快速开发平台,欢迎广大技术爱好者参与
  7. SpringBoot邮件服务
  8. 莱洛三角形和定宽曲线
  9. 密钥--公钥、私钥方式
  10. SQL Server:CONVERT() 函数
  11. domain name
  12. [Linux日记]解决Ubuntu升级出现/boot空间不足问题
  13. iis7.5站点为共享文件的设置
  14. 30. 实体和编码(2)
  15. winform 实现qq代理_「设计模式」代理模式:神奇的代理模式,节省了我80%开发时间...
  16. VBoxGuestAdditions.iso无法在virtualbox中正确安装
  17. epoll的LT模式(水平触发)和ET模式(边沿触发)
  18. python:tushare 获取A股指数数据,并使用LSTM预测
  19. [铁血开放平台]四轴团队
  20. 软件单元测试要点的一些理解

热门文章

  1. python插入排序算法总结
  2. String---Double 不依赖地域性的转换
  3. 关于数据库更新插入语句
  4. [转载]学习java30条基本的概念
  5. IIS和APACHE共用80端口的方法
  6. Seata多微服务互相调用_全局分布式事物使用案例_Order-Module order微服务的配置搭建---微服务升级_SpringCloud Alibaba工作笔记0060
  7. MyCat分布式数据库集群架构工作笔记0022---高可用_单表存储千万级_海量存储_分表扩展分片枚举
  8. IntelliJ Idea工作笔记009---代码没有错,但是在IDEA报错的原因
  9. Web前端工作笔记003---Javascript 解决IE8不支持filter、map的方法
  10. 正则表达式学习笔记001--点号匹配