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中使用CasperJS获取JS渲染生成的HTML内容的教程
Apr 09 Python
Python通过正则表达式选取callback的方法
Jul 18 Python
详解Swift中属性的声明与作用
Jun 30 Python
python 3利用BeautifulSoup抓取div标签的方法示例
May 28 Python
老生常谈python中的重载
Nov 11 Python
Python线程池模块ThreadPoolExecutor用法分析
Dec 28 Python
Django restframework 源码分析之认证详解
Feb 22 Python
python如何制作英文字典
Jun 25 Python
PyQt5+Caffe+Opencv搭建人脸识别登录界面
Aug 28 Python
opencv中图像叠加/图像融合/按位操作的实现
Apr 01 Python
Django框架配置mysql数据库实现过程
Apr 22 Python
Python类及获取对象属性方法解析
Jun 15 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
php 文件上传实例代码
2012/04/19 PHP
使用php计算排列组合的方法
2013/11/13 PHP
分享PHP源码批量抓取远程网页图片并保存到本地的实现方法
2015/12/01 PHP
PHP内核探索之变量
2015/12/22 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
2019/10/10 PHP
js 图片缩放(按比例)控制代码
2009/05/27 Javascript
动态加载外部javascript文件的函数代码分享
2011/07/28 Javascript
js showModalDialog 弹出对话框的简单实例(子窗体)
2014/01/07 Javascript
JavaScript中Math.SQRT2属性的使用详解
2015/06/14 Javascript
jQuery实现的图文高亮滚动切换特效实例
2015/08/10 Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
2016/12/21 Javascript
Angular2 PrimeNG分页模块学习
2017/01/14 Javascript
vue分类筛选filter方法简单实例
2017/03/30 Javascript
详解Webpack-dev-server的proxy用法
2018/09/08 Javascript
vue项目中引入Sass实例方法
2019/08/27 Javascript
layer实现弹出层自动调节位置
2019/09/05 Javascript
Layui弹出层 加载 做编辑页面的方法
2019/09/16 Javascript
layer扩展打开/关闭动画的方法
2019/09/23 Javascript
vue+导航锚点联动-滚动监听和点击平滑滚动跳转实例
2019/11/13 Javascript
vue2.0 watch里面的 deep和immediate用法说明
2020/10/30 Javascript
python实现简单购物商城
2016/05/21 Python
在Python的Flask中使用WTForms表单框架的基础教程
2016/06/07 Python
Tensorflow卷积神经网络实例
2018/05/24 Python
Python3.5 处理文本txt,删除不需要的行方法
2018/12/10 Python
python飞机大战pygame游戏框架搭建操作详解
2019/12/17 Python
新西兰领先的鞋类和靴子网上商城:Merchant 1948
2017/09/08 全球购物
Bealls Florida百货商店:生活服饰、家居装饰和鞋子
2018/02/23 全球购物
捷克街头、运动和滑板一站式商店:BoardStar.cz
2019/10/06 全球购物
《鸟的天堂》教学反思
2014/02/27 职场文书
2014年道德讲堂实施方案
2014/03/05 职场文书
工程学毕业生自荐信
2014/06/14 职场文书
综治维稳工作承诺书
2014/08/30 职场文书
会计工作岗位职责
2015/02/03 职场文书
生产车间主任岗位职责
2015/04/08 职场文书
一文帮你理解PReact10.5.13源码
2021/04/03 Javascript
浅谈MySQL next-key lock 加锁范围
2021/06/07 MySQL