PyTorch学习:动态图和静态图的例子


Posted in Python onJanuary 06, 2020

动态图和静态图

目前神经网络框架分为静态图框架和动态图框架,PyTorch 和 TensorFlow、Caffe 等框架最大的区别就是他们拥有不同的计算图表现形式。 TensorFlow 使用静态图,这意味着我们先定义计算图,然后不断使用它,而在 PyTorch 中,每次都会重新构建一个新的计算图。通过这次课程,我们会了解静态图和动态图之间的优缺点。

对于使用者来说,两种形式的计算图有着非常大的区别,同时静态图和动态图都有他们各自的优点,比如动态图比较方便debug,使用者能够用任何他们喜欢的方式进行debug,同时非常直观,而静态图是通过先定义后运行的方式,之后再次运行的时候就不再需要重新构建计算图,所以速度会比动态图更快。

# tensorflow
import tensorflow as tf
first_counter = tf.constant(0)
second_counter = tf.constant(10)
# 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_counter
def 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 循环语句,需要使用辅助函数 tf.while_loop 写成 TensorFlow 内部的形式

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

可以看到 PyTorch 的写法跟 Python 的写法是完全一致的,没有任何额外的学习成本

以上这篇PyTorch学习:动态图和静态图的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python之PyUnit单元测试实例
Oct 11 Python
浅谈python新手中常见的疑惑及解答
Jun 14 Python
qpython3 读取安卓lastpass Cookies
Jun 19 Python
python+VTK环境搭建及第一个简单程序代码
Dec 13 Python
Python实现的各种常见分布算法示例
Dec 13 Python
Python实现爬取亚马逊数据并打印出Excel文件操作示例
May 16 Python
Python3匿名函数lambda介绍与使用示例
May 18 Python
解决django后台样式丢失,css资源加载失败的问题
Jun 11 Python
pandas将list数据拆分成行或列的实现
Dec 13 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
Jan 29 Python
Python绘制地图神器folium的新人入门指南
May 23 Python
python状态机transitions库详解
Jun 02 Python
pytorch动态网络以及权重共享实例
Jan 06 #Python
selenium中get_cookies()和add_cookie()的用法详解
Jan 06 #Python
pytorch中的自定义反向传播,求导实例
Jan 06 #Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
Jan 06 #Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
Jan 06 #Python
基于python+selenium的二次封装的实现
Jan 06 #Python
Python使用Tkinter实现滚动抽奖器效果
Jan 06 #Python
You might like
收音机术语解释
2021/03/01 无线电
php中实现记住密码自动登录的代码
2011/03/02 PHP
php object转数组示例
2014/01/15 PHP
ThinkPHP中html:list标签用法分析
2016/01/09 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
2016/11/09 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
详解PHP PDO简单教程
2019/05/28 PHP
在Javascript中 声明时用&quot;var&quot;与不用&quot;var&quot;的区别
2013/04/15 Javascript
javascript操作符&quot;!~&quot;详解
2015/02/10 Javascript
jQuery技巧之让任何组件都支持类似DOM的事件管理
2016/04/05 Javascript
Javascript OOP之面向对象
2016/07/31 Javascript
javascript深拷贝(deepClone)详解
2016/08/24 Javascript
JS中with的替代方法与String中的正则方法详解
2016/12/23 Javascript
JS实现的表头列头固定页面功能示例
2017/01/10 Javascript
javascript 正则表达式去空行方法
2017/01/24 Javascript
vue实现的组件兄弟间通信功能示例
2018/12/04 Javascript
用Electron写个带界面的nodejs爬虫的实现方法
2019/01/29 NodeJs
利用Vue实现一个markdown编辑器实例代码
2019/05/19 Javascript
简单了解Javscript中兄弟ifream的方法调用
2019/06/17 Javascript
python读取word文档的方法
2015/05/09 Python
python协程用法实例分析
2015/06/04 Python
对于Python中RawString的理解介绍
2016/07/07 Python
Django models.py应用实现过程详解
2019/07/29 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
2020/04/26 Python
keras实现VGG16 CIFAR10数据集方式
2020/07/07 Python
Python如何在bool函数中取值
2020/09/21 Python
联想澳大利亚官网:Lenovo Australia
2018/01/18 全球购物
英国的一家创新礼品和小工具零售商:Menkind
2019/08/24 全球购物
试用期转正鉴定评语
2014/01/27 职场文书
2014年个人思想工作总结
2014/11/27 职场文书
工作失职检讨书
2015/01/26 职场文书
辣妈辣妹观后感
2015/06/10 职场文书
2015年评职称个人工作总结
2015/10/15 职场文书
奖学金发言稿(范文)
2019/08/21 职场文书
安装配置mysql及Navicat prenium的详细流程
2021/06/10 MySQL
Linux中文件的基本属性介绍
2022/06/01 Servers