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之赋值,简单也不简单
Sep 24 Python
编写自定义的Django模板加载器的简单示例
Jul 21 Python
Python利用Beautiful Soup模块创建对象详解
Mar 27 Python
Python实现Linux中的du命令
Jun 12 Python
Python简单实现自动删除目录下空文件夹的方法
Aug 29 Python
python的Tqdm模块的使用
Jan 10 Python
Flask入门之上传文件到服务器的方法示例
Jul 18 Python
Python操作配置文件ini的三种方法讲解
Feb 22 Python
selenium2.0中常用的python函数汇总
Aug 05 Python
python3的UnicodeDecodeError解决方法
Dec 20 Python
基于django micro搭建网站实现加水印功能
May 22 Python
python golang中grpc 使用示例代码详解
Jun 03 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
异世界新番又来了,同样是从零开始,男主的年龄降到5岁
2020/04/09 日漫
php自动加载机制的深入分析
2013/06/08 PHP
PHP+百度AI OCR文字识别实现了图片的文字识别功能
2019/05/08 PHP
PHP基于进程控制函数实现多线程
2020/12/09 PHP
getElementByIdx_x js自定义getElementById函数
2012/01/24 Javascript
框架页面高度自动刷新的Javascript脚本
2013/11/01 Javascript
node.js中的fs.mkdir方法使用说明
2014/12/17 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
2016/08/03 Javascript
基于js中的原型、继承的一些想法
2016/08/10 Javascript
js判断checkbox是否选中个数的方法(超简单)
2016/08/19 Javascript
js正则表达式惰性匹配和贪婪匹配用法分析
2016/12/26 Javascript
vue动态添加路由addRoutes之不能将动态路由存入缓存的解决
2019/02/19 Javascript
webpack中如何加载静态文件的方法步骤
2019/05/18 Javascript
vue实现评价星星功能
2020/06/30 Javascript
浅析JavaScript预编译和暗示全局变量
2020/09/03 Javascript
js代码编写无缝轮播图
2020/09/13 Javascript
python多线程http下载实现示例
2013/12/30 Python
Python中方法链的使用方法
2016/02/23 Python
探究python中open函数的使用
2016/03/01 Python
Python 获得命令行参数的方法(推荐)
2018/01/24 Python
CentOS 7 安装python3.7.1的方法及注意事项
2018/11/01 Python
详解用Python练习画个美队盾牌
2019/03/23 Python
python Django中models进行模糊查询的示例
2019/07/18 Python
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
应届大专毕业生个人自荐信
2013/09/22 职场文书
旅游管理专业学生求职信
2013/09/28 职场文书
新文化运动的口号
2014/06/21 职场文书
七夕相亲活动策划方案
2014/08/31 职场文书
2014年绩效考核工作总结
2014/12/11 职场文书
先进事迹材料范文
2014/12/29 职场文书
体育教师个人总结
2015/02/09 职场文书
教师节主题班会教案
2015/08/17 职场文书
婚礼男方父母答谢词
2015/09/29 职场文书
golang import自定义包方式
2021/04/29 Golang
集英社今正式宣布 成立游戏公司“集英社Games”
2022/03/31 其他游戏
Python使用PyYAML库读写yaml文件的方法
2022/04/06 Python