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基于pygame实现的font游戏字体(附源码)
Nov 11 Python
python实现字典(dict)和字符串(string)的相互转换方法
Mar 01 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
Dec 20 Python
pandas series序列转化为星期几的实例
Apr 11 Python
Python if语句知识点用法总结
Jun 10 Python
Django 再谈一谈json序列化
Mar 16 Python
Python使用xpath实现图片爬取
Sep 16 Python
如何利用python读取micaps文件详解
Oct 18 Python
http通过StreamingHttpResponse完成连续的数据传输长链接方式
Feb 12 Python
分享Python获取本机IP地址的几种方法
Mar 17 Python
Python获取字典中某个key的value
Apr 13 Python
python 闭包函数详细介绍
Apr 19 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中is_null,empty,isset,unset 的区别详细介绍
2013/04/28 PHP
phpmailer发送gmail邮件实例详解
2013/06/24 PHP
php中引用符号(&amp;)的使用详解
2013/11/13 PHP
PHP 动态生成静态HTML页面示例代码
2014/01/15 PHP
PHP实现的json类实例
2015/07/28 PHP
学习YUI.Ext第七日-View&amp;JSONView Part Two-一个画室网站的案例
2007/03/10 Javascript
date.parse在IE和FF中的区别
2010/07/29 Javascript
JavaScript单元测试ABC
2012/04/12 Javascript
js判断选择时间不能小于当前时间的示例代码
2013/09/24 Javascript
使用原生js写的一个简单slider
2014/04/29 Javascript
js实现简单选项卡与自动切换效果的方法
2015/04/10 Javascript
JS实现的倒计时效果实例(2则实例)
2015/12/23 Javascript
jQuery绑定事件监听bind和移除事件监听unbind用法实例详解
2016/01/19 Javascript
AngularJS中的Directive自定义一个表格
2016/01/25 Javascript
jQuery实现图片局部放大镜效果
2016/03/17 Javascript
easyui window refresh 刷新两次的解决方法(推荐)
2016/05/18 Javascript
js 获取元素所有兄弟节点的实现方法
2016/09/06 Javascript
Thinkphp5微信小程序获取用户信息接口的实例详解
2017/09/26 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
2017/11/10 Javascript
vue awesome swiper异步加载数据出现的bug问题
2018/07/03 Javascript
vue-rx的初步使用教程
2018/09/21 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
深入理解 ES6中的 Reflect用法
2020/07/18 Javascript
python简单实现旋转图片的方法
2015/05/30 Python
Python使用sorted排序的方法小结
2017/07/28 Python
详解如何用TensorFlow训练和识别/分类自定义图片
2019/08/05 Python
python 解决cv2绘制中文乱码问题
2019/12/23 Python
CSS3 :not()选择器实现最后一行li去除某种css样式
2016/10/19 HTML / CSS
西海岸男士和男童服装:Johnnie-O
2018/03/15 全球购物
英国100%防污和防水的靴子:Muck Boot Company
2020/09/08 全球购物
店面销售职位的职责
2014/03/09 职场文书
《三个小伙伴》教学反思
2014/04/11 职场文书
2015年会计年终工作总结
2015/05/26 职场文书
增值税发票丢失证明
2015/06/19 职场文书
会议室使用管理制度
2015/08/06 职场文书
css display table 自适应高度、宽度问题的解决
2021/05/07 HTML / CSS