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简单获取本机计算机名和IP地址的方法
Jun 03 Python
Python操作Word批量生成文章的方法
Jul 28 Python
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
Oct 29 Python
Python实现八皇后问题示例代码
Dec 09 Python
使用Python的SymPy库解决数学运算问题的方法
Mar 27 Python
Windows10+anacond+GPU+pytorch安装详细过程
Mar 24 Python
python 字典item与iteritems的区别详解
Apr 25 Python
Django 解决新建表删除后无法重新创建等问题
May 21 Python
基于python模拟bfs和dfs代码实例
Nov 19 Python
Python Http请求json解析库用法解析
Nov 28 Python
python中使用np.delete()的实例方法
Feb 01 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
将数字格式的计算结果转为汉字格式
2006/10/09 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
2014/01/24 PHP
php进程间通讯实例分析
2016/07/11 PHP
Yii2框架控制器、路由、Url生成操作示例
2019/05/27 PHP
Extjs实现进度条的两种便捷方式
2013/09/26 Javascript
Javascript执行效率全面总结
2013/11/04 Javascript
javascript从右边截取指定字符串的三种实现方法
2013/11/29 Javascript
javascript 实现map集合
2015/04/03 Javascript
js代码实现无缝滚动(文字和图片)
2015/08/20 Javascript
易操作的jQuery表单提示插件
2015/12/01 Javascript
jQuery Jsonp跨域模拟搜索引擎
2017/06/17 jQuery
从源码里了解vue中的nextTick的使用
2018/11/22 Javascript
vue中的面包屑导航组件实例代码
2019/07/01 Javascript
20个必会的JavaScript面试题(小结)
2019/07/02 Javascript
解决layui中onchange失效以及form动态渲染失效的问题
2019/09/27 Javascript
JavaScript鼠标拖拽事件详解
2020/04/03 Javascript
详细讲解Python中的文件I/O操作
2015/05/24 Python
Python读大数据txt
2016/03/28 Python
小议Python中自定义函数的可变参数的使用及注意点
2016/06/21 Python
CentOS 6.5中安装Python 3.6.2的方法步骤
2017/12/03 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
2018/12/20 Python
Python后台开发Django的教程详解(启动)
2019/04/08 Python
使用pytorch完成kaggle猫狗图像识别方式
2020/01/10 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
2020/02/03 Python
Python爬虫程序架构和运行流程原理解析
2020/03/09 Python
html5 css3 动态气泡按钮实例演示
2012/12/02 HTML / CSS
使用CSS媒体查询(Media Queries)和JavaScript判断浏览器设备类型的方法
2014/04/03 HTML / CSS
安全资金保障制度
2014/01/23 职场文书
法学函授自我鉴定
2014/02/06 职场文书
参赛口号
2014/06/16 职场文书
岗位工作说明书
2014/07/29 职场文书
合作协议书范本
2014/10/25 职场文书
租车协议书范本2014
2014/11/17 职场文书
2015年派出所民警工作总结
2015/04/24 职场文书
python中os.path.join()函数实例用法
2021/05/26 Python
Java实现贪吃蛇游戏的示例代码
2022/09/23 Java/Android