DL计算图CG:从入门到精通

计算图的简介

计算图Computational Graph,被定义为有向图,其中节点对应于数学运算。 计算图是表达和评估数学表达式的一种方式。是一种描述方程的“语言”。既然是图,则有节点(变量),边(操作(简单函数))

反向传播通过使用计算图形在Tensorflow,Torch,Theano等深度学习框架中实现。 更为重要的是,理解计算图上的反向传播结合了几种不同的算法及其变体,如通过时间反向传播和共享权重反向传播。一切转换成计算图,它们仍然是相同的算法 - 只是在计算图上反向传播。

其中,TensorFlow是一个通过计算图的形式来表述计算的编程系统。基于TensorFlow这个编程系统中的每一个计算都是计算图上的一个节点,而节点与节点之间的连线则代表计算之间的依赖关系。

1)、计算图,可以直观地把握计算过程。

2)、计算图的节点是由局部计算构成的。局部计算构成全局计算。

3)、在神经网络算法中,计算图的正向传播进行一般的计算。通过计算图的反向传播,可以计算各个节点的导数。



CG的优点:[1],

  • 优点1:局部计算。无论全局是多么复杂的计算,都可以通过局部计算使各个节点致力于简单的计算,从而简化问题。
  • 优点2:利用计算图可以将中间的计算结果全部保存起来(比如,计算进行到2 个苹果时的金额是200 日元、加上消费税之前的金额650 日元等)。但是只有这些理由可能还无法令人信服。
  • 优点3:实际上,使用计算图最大的原因是,可以通过反向传播高效计算导数。



CG应用:[1],


1、利用计算图来理解神经网络的反向传播思路。

假设我们想知道苹果价格的上涨会在多大程度上影响最终的支付金额,即求“支付金额关于苹果的价格的导数”。设苹果的价格为x,支付金额为L,则相当于求dL/dx。这个导数的值表示当苹果的价格稍微上涨时,支付金额会增加多少。


“支付金额关于苹果的价格的导数”的值可以通过计算图的反向传播求出来。可以通过计算图的反向传播求导数。

DL之CG:Computational Graph计算图的简介、入门、使用之详细攻略_反向传播


可知,计算图的优点是,可以通过正向传播和反向传播高效地计算各个变量的导数值。传递这个局部导数的原理,是基于链式法则(chain rule)。

DL:深度学习神经网络算法中的相关概念(链式法则等)简介、使用之详细攻略

2、计算图的反向传播:沿着与正方向相反的方向,乘上局部导数。

DL之CG:Computational Graph计算图的简介、入门、使用之详细攻略_神经网络_02


如图所示,反向传播的计算顺序是,将信号E乘以节点的局部导数dy/dx,然后将结果传递给下一个节点。这里所说的局部导数是指正向传播中y = f(x) 的导数,也就是y 关于x的导数dy/dx。比如,假设y = f(x) = x^2,则局部导数为= 2x。把这个局部导数乘以上游传过来的值(即E),然后传递给前面的节点。




计算图的入门



0、基本思路

1). 构建计算图。

2). 在计算图上,从左向右进行计算。正向传播是从计算图出发点到结束点的传播。既然有正向传播这个名称,当然也可以考虑反向(从图上看的话,就是从右向左)的传播。实际上,这种传播称为反向传播(backward propagation)。反向传 播将在导数计算中发挥重要作用。



1、将数学公式 g = ( x + y ) ∗ z 转为计算图理解

DL之CG:Computational Graph计算图的简介、入门、使用之详细攻略_反向传播_03



2、太郎在超市买了2 个100 日元一个的苹果,消费税是10%,请计算支付金额。[1]

DL之CG:Computational Graph计算图的简介、入门、使用之详细攻略_反向传播_04

DL之CG:Computational Graph计算图的简介、入门、使用之详细攻略_反向传播_05



3、太郎在超市买了2 个苹果、3 个橘子。其中,苹果每个100 日元,橘子每个150 日元。消费税是10%,请计算支付金额。[1]

DL之CG:Computational Graph计算图的简介、入门、使用之详细攻略_神经网络_06


CG与局部计算

计算图的特征是可以通过传递“局部计算”获得最终结果。“局部”这个词的意思是“与自己相关的某个小范围”。局部计算是指,无论全局发生了什么,都能只根据与自己相关的信息输出接下来的结果。

计算图可以集中精力于局部计算。无论全局的计算有多么复杂,各个步骤所要做的就是对象节点的局部计算。虽然局部计算非常简单,但是通过传递它的计算结果,可以获得全局的复杂计算的结果。


1、在超市买了2 个苹果和其他很多东西。

DL之CG:Computational Graph计算图的简介、入门、使用之详细攻略_tensorflow_07






计算图的使用

0、使用TensorFlow的过程中,通常需要定义两个阶段

  • 阶段1:定义计算图中所有的计算
  • 阶段2:执行计算



定义计算阶段的Demo:下边的代码中,TensorFlow会自动将定义的计算a和b转化为计算图中的节点。在TensorFlow中,系统会自动维护一个默认的计算图,通过tf.get_default_graph​函数可以获取当前默认的计算图。除了使用默认的计算图,TensorFlow支持通过tf.Graph函数来生成新的计算图。

登录后复制

import tensorflow as tfa = tf.constant([1.0,2.0], name='a')b = tf.constant([3.0,4.0], name='b')result = a + b1.2.3.4.


1、backpropagation 算法用CG理解

DL之CG:Computational Graph计算图的简介、入门、使用之详细攻略_tensorflow_08



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空