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的几条建议分享
Feb 10 Python
Django中几种重定向方法
Apr 28 Python
Django框架教程之正则表达式URL误区详解
Jan 28 Python
python3爬取淘宝信息代码分析
Feb 10 Python
python方法生成txt标签文件的实例代码
May 10 Python
Vue的el-scrollbar实现自定义滚动
May 29 Python
python爬取微信公众号文章
Aug 31 Python
PyQt5显示GIF图片的方法
Jun 17 Python
python实现截取屏幕保存文件,删除N天前截图的例子
Aug 27 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
Oct 16 Python
django之从html页面表单获取输入的数据实例
Mar 16 Python
Python基于模块Paramiko实现SSHv2协议
Apr 28 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中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
2011/08/23 PHP
php中使用$_REQUEST需要注意的一个问题
2013/05/02 PHP
迪菲-赫尔曼密钥交换(Diffie?Hellman)算法原理和PHP实现版
2015/05/12 PHP
CakePHP框架Model函数定义方法示例
2017/08/04 PHP
php ajax confirm 删除实例详解
2019/03/06 PHP
JSON JQUERY模板实现说明
2010/07/03 Javascript
高性能Javascript笔记 数据的存储与访问性能优化
2012/08/02 Javascript
基于jquery实现后台左侧菜单点击上下滑动显示
2013/04/11 Javascript
js相册效果代码(点击创建即可)
2013/04/16 Javascript
SOSO地图JS画出标注和中心点以html形式运行
2013/08/09 Javascript
Javascript获取CSS伪元素属性的实现代码
2014/09/28 Javascript
推荐4个原生javascript常用的函数
2015/01/12 Javascript
微信小程序实现登录页云层漂浮的动画效果
2017/05/05 Javascript
Javascript中Promise的四种常用方法总结
2017/07/14 Javascript
vue-cli如何引入bootstrap工具的方法
2017/10/19 Javascript
Vue-resource拦截器判断token失效跳转的实例
2017/10/27 Javascript
JS实现根据详细地址获取经纬度功能示例
2019/04/16 Javascript
小程序接口的promise化的实现方法
2019/12/11 Javascript
JS实现旋转木马轮播图
2020/01/01 Javascript
[29:16]完美世界DOTA2联赛决赛日 Inki vs LBZS 第三场 11.08
2020/11/10 DOTA
python遍历类中所有成员的方法
2015/03/18 Python
详解Python中的各种函数的使用
2015/05/24 Python
python框架django基础指南
2016/09/08 Python
PyTorch快速搭建神经网络及其保存提取方法详解
2018/04/28 Python
python语音识别实践之百度语音API
2018/08/30 Python
python并发和异步编程实例
2018/11/15 Python
利用Python模拟登录pastebin.com的实现方法
2019/07/12 Python
python使用if语句实现一个猜拳游戏详解
2019/08/27 Python
Python类如何定义私有变量
2020/02/03 Python
Python数据可视化图实现过程详解
2020/06/12 Python
使用html5新特性轻松监听任何App自带返回键的示例
2018/03/13 HTML / CSS
世界首屈一指的钓鱼用品商店:TackleDirect
2016/07/26 全球购物
美国办公用品购物网站:Quill.com
2016/09/01 全球购物
美国领先的个性化礼品商城:Personalization Mall
2019/07/27 全球购物
敬老院志愿者活动总结
2015/05/06 职场文书
2019辞职报告范本3篇!
2019/07/23 职场文书