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

目录

计算图的简介

计算图的入门

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。这个导数的值表示当苹果的价格稍微上涨时,支付金额会增加多少。
        “支付金额关于苹果的价格的导数”的值可以通过计算图的反向传播求出来。可以通过计算图的反向传播求导数。

可知,计算图的优点是,可以通过正向传播和反向传播高效地计算各个变量的导数值。传递这个局部导数的原理,是基于链式法则(chain rule)。
DL:深度学习神经网络算法中的相关概念(链式法则等)简介、使用之详细攻略

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

如图所示,反向传播的计算顺序是,将信号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 转为计算图理解

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

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

CG与局部计算

计算图的特征是可以通过传递“局部计算”获得最终结果。“局部”这个词的意思是“与自己相关的某个小范围”。局部计算是指,无论全局发生了什么,都能只根据与自己相关的信息输出接下来的结果。
      计算图可以集中精力于局部计算。无论全局的计算有多么复杂,各个步骤所要做的就是对象节点的局部计算。虽然局部计算非常简单,但是通过传递它的计算结果,可以获得全局的复杂计算的结果。
1、在超市买了2 个苹果和其他很多东西。

计算图的使用

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

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

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

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

1、backpropagation 算法用CG理解

参考文章
[1]《深度入门-基python的理论与实现》

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

  1. DL之BP:神经网络算法简介之BP算法简介(链式法则/计算图解释)、案例应用之详细攻略

    DL之BP:神经网络算法简介之BP算法简介(链式法则/计算图解释).案例应用之详细攻略 相关文章:DL之DNN之BP:神经网络算法简介之BP算法/GD算法之不需要额外任何文字,只需要八张图讲清楚BP类 ...

  2. DL之self-attention:self-attention自注意力机制的简介、应用之详细攻略

    DL之self-attention:self-attention自注意力机制的简介.应用之详细攻略 目录 self-attention的简介 1.self-attention的影响 2.self-at ...

  3. DL之DNN优化技术:DNN中参数初始化【Lecun参数初始化、He参数初始化和Xavier参数初始化】的简介、使用方法详细攻略

    DL之DNN优化技术:DNN中参数初始化[Lecun参数初始化.He参数初始化和Xavier参数初始化]的简介.使用方法详细攻略 导读:现在有很多学者认为,随着BN层的提出,权重初始化可能已不再那么紧 ...

  4. DL之Attention:Attention注意力机制的简介、应用领域之详细攻略

    DL之Attention:Attention注意力机制的简介.应用领域之详细攻略 目录 Attention的简介 1.Why Attention? 2.Attention机制的分类 3.Attenti ...

  5. TF之data_format:data_format中的NHWCNCHW简介、转换的详细攻略

    TF之data_format:data_format中的NHWC&NCHW简介.转换的详细攻略 目录 NHWC&NCHW简介 NHWC&NCHW转换 NHWC&NCHW ...

  6. NLP:自然语言处理技术近十年发展技术更迭的简介、案例之详细攻略(持续更新)

    NLP:自然语言处理技术近十年发展技术更迭的简介.案例之详细攻略(持续更新) 目录 自然语言处理技术近十年发展技术更迭的简介.案例

  7. Computer:路由器、交换机、猫Modem的简介、区别之详细攻略

    Computer:路由器.交换机.猫Modem的简介.区别之详细攻略 目录 路由器.交换机的简介 交换机 路由器 猫Modem 外置式Modem的软件安装 外置式Modem的硬件安装 路由器.交换机. ...

  8. Dataset:机器学习和深度学习中对数据集进行高级绘图(数据集可视化,箱线图等)的简介、应用之详细攻略——daidingdaiding

    Dataset:机器学习和深度学习中对数据集进行高级绘图(数据集可视化,箱线图等)的简介.应用之详细攻略--daidingdaiding 目录 箱线图 箱线图 箱线图(box plots):这些图显示 ...

  9. Py之Numpy:Numpy库中常用函数的简介、应用之详细攻略

    Py之Numpy:Numpy库中常用函数的简介.应用之详细攻略 目录 Numpy库中常用函数的简介.应用 1.X, Y = np.meshgrid(X, Y) 相关文章 Py之Numpy:Numpy库 ...

最新文章

  1. [C++再学习系列] 前置++与后置++
  2. 完成一个MVC+Nhibernate+Jquery-EasyUI信息发布系统
  3. 【五校联考5day1】序列
  4. 调用Xvid编码器流程(基于xvid1.1.0)
  5. .NET Core很酷,你不得不知
  6. Android 开发 存储目录的详解
  7. RTX5 | 信号量01 - 信号量的使用
  8. Iometer存储测试工具参数说明-图形主界面(整理)
  9. Git之同一台电脑如何连接多个远程仓库
  10. 狼真来了!黑客利用SS7漏洞将网银用户洗劫一空
  11. python函数定义及调用-python 中函数的定义以及调用先后顺序问题
  12. 深度学习中所有的优化器的详细介绍与列表化对比分析
  13. 计算机软考软件设计师知识点:软件可行性研究报告
  14. USBKEY用户认证平台的研究和实现
  15. 鼎捷E10视频教程合集19大模块
  16. 庄曜计算机应用作曲电子书阅读,庄曜计算机应用作曲的意义
  17. docker镜像仓库habor1.10.0安装配置-单机版
  18. UEA数据集和UCR数据集的处理
  19. android 调试原理
  20. windows启动引导管理

热门文章

  1. hadoop centos 安装
  2. double free
  3. 什么是伪静态?SEO中如何理解伪静态?
  4. 在 Redis 中设置了过期时间的 Key,需要注意哪些问题?
  5. 说实话,Hibernate 和 MyBatis 哪个更好用?
  6. 大白话 + 13 张图解 Kafka
  7. 看到了商机,为什么赚不到钱?
  8. Kubernetes 2018 年度简史
  9. 没看过这条鄙视链,别轻易说你懂区块链!
  10. Java集合:Integer.parseInt() String.substring()