动态图

动态图意味着计算图的构建和计算同时发生(define by run)。这种机制由于能够实时得到中间结果的值,使得调试更加容易,同时我们将大脑中的想法转化为代码方案也变得更加容易,对于编程实现来说更友好。Pytorch使用的就是动态图机制,因此它更易上手,风格更加pythonic,大受科研人员的喜爱。

静态图

静态图则意味着计算图的构建和实际计算是分开(define and run)的。在静态图中,会事先了解和定义好整个运算流,这样之后再次运行的时候就不再需要重新构建计算图了(可理解为编译),因此速度会比动态图更快,从性能上来说更加高效,但这也意味着你所期望的程序与编译器实际执行之间存在着更多的代沟,代码中的错误将难以发现,无法像动态图一样随时拿到中间计算结果。Tensorflow默认使用的是静态图机制,这也是其名称的由来,先定义好整个计算流(flow),然后再对数据(tensor)进行计算。

动态图与静态图差异对比

一段代码分别基于pytorch和tensorflow的实现

pytorch

import torch first_counter =torch.Tensor([0])
second_counter=torch.Tensor([10])
while (first_counter < second_counter)[0]: first_counter += 2second_counter += 1print(first_counter)
print(second_counter)

tensorflow

import tensorflow as tf first_counter=tf.constant(0)
second_counter=tf.constant(10)
def cond(first_counter, second_counter,* args): return first_counter< second_counterdef body(first_counter, second_counter): first_counter=tf.add(first_counter,2)second_counter=tf.add(second_counter,1)return first_counter, second_counter c1,c2 = tf.while_loop(cond, body, [first_counter, second_counter])with tf.Session() as sess: counter_1_res, counter_2_res = sess.run([c1,c2])print(counter_1_res)
print(counter_2_res)

Tensorflow在静态图的模式下,每次运算使用的计算图都是同一个,因此不能直接使用Python的while 循环语句,而是要使用其内置的辅助函数tfwhile loop,而且还要tf.Session().run()之类的乱七八糟.

而Pytorch是动态图的模式,每次运算会构建新的计算图,在编程实现上不需要额外的学习成本

动态图 vs 静态图相关推荐

  1. Pytorch Note5 动态图和静态图 dynamic-graph

    Pytorch Note5 动态图和静态图 动态图和静态图 TensorFlow PyTorch 全部笔记的汇总贴:Pytorch Note 快乐星球 动态图和静态图 目前神经网络框架分为静态图框架和 ...

  2. Paddle框架理解:模型状态、动态图与静态图、paddle.nn与paddle.nn.functional异同

    文章目录 前言 1. 模型状态 2. 动态图与静态图 3. paddle.nn 与paddle.nn.functional异同 参考 前言 最近在学习Paddle深度学习框架,这里对个人觉得比较重要的 ...

  3. PyTorch 的 Autograd、计算图、叶子张量、inplace 操作、动态图,静态图(来自知乎)

    本博文来自:https://zhuanlan.zhihu.com/p/69294347 非常感谢此博主! PyTorch 作为一个深度学习平台,在深度学习任务中比 NumPy 这个科学计算库强在哪里呢 ...

  4. 深度学习静态图和静态图的区别以及优缺点是什么?

    深度学习静态图和静态图的区别以及优缺点是什么? 不论是动态图还是静态图,它们都属于计算图.计算图是用来描述运算的有向无环图,它有两个主要元素:结点(Node)和边(Edge).结点表示数据,如向量.矩 ...

  5. 基于pytorch实现图像分类——理解自动求导、计算图、静态图、动态图、pytorch入门

    1. pytorch入门 什么是PYTORCH? 这是一个基于Python的科学计算软件包,针对两组受众: 替代NumPy以使用GPU的功能 提供最大灵活性和速度的深度学习研究平台 1.1 开发环境 ...

  6. TensorFlow动态图 VS PyTorch静态图

    点击关注我哦 一篇文章带你了解动态图和静态图的区别和优劣 但凡我们接触深度学习框架,肯定都会听过"计算图"这个概念,如果有具体使用过某个框架,可以知道计算图又可以分为:静态图和动态 ...

  7. 【UML 建模】UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战

    发现个好东西思维导图, 最近开始用MindManager整理博客 . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/deta ...

  8. 如何做到像百度云或者网易公开课一样动态更换APP启动图

    http://www.code4app.com/forum.php?mod=viewthread&tid=7632&extra=page%3D2%26filter%3Dsortid%2 ...

  9. OneFlow 如何做静态图的算子对齐任务

    文章目录 1 前言 2 OneFlow 的 Graph 算子对齐概述 3 Graph 模式下自动测试实现原理 3.1 AutoTest 流程介绍 3.2 Graph 模式如何伴随 Eager 模式做算 ...

最新文章

  1. JVM解读-性能调优实例
  2. 财务大数据比赛有python吗-如何在一个月之内掌握python数据分析,参加大数据比赛?...
  3. 二叉树、二叉排序树及其遍历
  4. Self-Attention GAN 中的 self-attention 机制
  5. Windows IIS 日志分析研究(Log Parser Log Parser Lizard Log Parser Studio) update...
  6. Leetcode每日一题:168.excel-sheet-column-title(Excel表名称)
  7. 华为机试HJ12:字符串反转
  8. React native 分享 友盟分享SDK
  9. NPN和PNP三极管做开关电路
  10. php网站后台密码忘记,phpweb忘记后台密码
  11. 电阻的组成、分类及读数方法
  12. 自定义变量的一个有趣案例
  13. Linux:安装npm
  14. 课后作业7.1:文件系统的静态结构
  15. 用数万元购买个人网站域名是否值得?
  16. 哈佛女校长给2008年本科毕业生的演讲
  17. 1005打印任务取消不了 hp_怎么办?HP1005打印机显示正在打印却打 – 手机爱问
  18. 鼠标移入图标显示二维码功能实现
  19. 洛谷P2312 秦九韶算法求多项式点值
  20. 矩阵计算器的c语言代码大全,一个有关向量与矩阵的实用计算器程序

热门文章

  1. Mac下载和安装IntelliJ IDEA(JetBrains为专业开发者提供的Java IDE)
  2. unity 设置图片九宫格_Unity UGUI篇 Image图片
  3. 怎么卸载电脑中的oracle,oracle怎么完全卸载
  4. mysql的prepared_statement
  5. 隐马尔可夫模型之Baum-Welch算法详解
  6. 虚拟服务器的好处与坏处,虚拟主机有什么坏处
  7. Camera 冷启动阶段分解
  8. 51单片机 | 外部中断实验
  9. Git冲突:Your local changes would be overwritten by merge. Commit, stash or revert them to proceed.
  10. Python解析GPGGA报文_统计数据完整率