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 元类使用说明
Dec 18 Python
Python模块学习 filecmp 文件比较
Aug 27 Python
python3.5 + PyQt5 +Eric6 实现的一个计算器代码
Mar 11 Python
利用python如何处理nc数据详解
May 23 Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
Sep 02 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
Sep 27 Python
在Python中增加和插入元素的示例
Nov 01 Python
python实现图片中文字分割效果
Jul 22 Python
Python 通过截图匹配原图中的位置(opencv)实例
Aug 27 Python
python中的列表和元组区别分析
Dec 30 Python
python生成随机数、随机字符、随机字符串
Apr 06 Python
python使用pycharm安装pyqt5以及相关配置
Apr 22 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
一些星际专用术语解释
2020/03/04 星际争霸
PHP通过iconv将字符串从GBK转换为UTF8字符集
2011/07/18 PHP
基于PHP CURL获取邮箱地址的详解
2013/06/03 PHP
php压缩和解压缩字符串的方法
2015/03/14 PHP
PHP模板引擎Smarty内置变量调解器用法详解
2016/04/11 PHP
JavaScript面向对象知识串结(读JavaScript高级程序设计(第三版))
2012/07/17 Javascript
浅析JavaScript中的常用算法与函数
2013/11/21 Javascript
JavaScript原生对象之Number对象的属性和方法详解
2015/03/13 Javascript
详解JavaScript for循环中发送AJAX请求问题
2020/06/23 Javascript
Bootstrap显示与隐藏简单实现代码
2017/03/06 Javascript
js放到head中失效的原因与解决方法
2017/03/07 Javascript
详解微信小程序Page中data数据操作和函数调用
2017/09/27 Javascript
vue.js删除列表中的一行
2018/06/30 Javascript
详解Node.js使用token进行认证的简单示例
2020/05/25 Javascript
vue 在methods中调用mounted的实现操作
2020/08/07 Javascript
JavaScript代码实现微博批量取消关注功能
2021/02/05 Javascript
Django中使用group_by的方法
2015/05/26 Python
Pthon批量处理将pdb文件生成dssp文件
2015/06/21 Python
从源码解析Python的Flask框架中request对象的用法
2016/06/02 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
2018/01/10 Python
利用Python如何批量修改数据库执行Sql文件
2018/07/29 Python
Python 爬取必应壁纸的实例讲解
2020/02/24 Python
Python hashlib模块的使用示例
2020/10/09 Python
CSS3 渐变(Gradients)之CSS3 线性渐变
2016/07/08 HTML / CSS
HTML5 canvas标签实现刮刮卡效果
2015/04/24 HTML / CSS
基于html5绘制圆形多角图案
2016/04/21 HTML / CSS
汉森冲浪板:Hansen Surfboards
2018/05/19 全球购物
学习保证书范文
2014/04/30 职场文书
2014年廉洁自律承诺书
2014/05/26 职场文书
违纪检讨书
2015/01/27 职场文书
个人学习总结范文
2015/02/15 职场文书
施工安全协议书
2016/03/22 职场文书
创业计划书之餐饮馄饨店
2019/07/18 职场文书
如何使用PostgreSQL进行中文全文检索
2021/05/27 PostgreSQL
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python
多人盗宝《绿林侠盗》第三赛季4.5上线 跨平台实装
2022/04/03 其他游戏