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 相关文章推荐
Python3 入门教程 简单但比较不错
Nov 29 Python
python中urllib模块用法实例详解
Nov 19 Python
python实现向ppt文件里插入新幻灯片页面的方法
Apr 28 Python
matplotlib简介,安装和简单实例代码
Dec 26 Python
对python的输出和输出格式详解
Dec 08 Python
解决pycharm remote deployment 配置的问题
Jun 27 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
Sep 15 Python
python去除删除数据中\u0000\u0001等unicode字符串的代码
Mar 06 Python
python实现人机五子棋
Mar 25 Python
使用Keras构造简单的CNN网络实例
Jun 29 Python
使用Pytorch训练two-head网络的操作
May 28 Python
Python 一键获取电脑浏览器的账号密码
May 11 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
《APMServ 5.1.2》使用图解
2006/10/23 PHP
PHP 的几个配置文件函数
2006/12/21 PHP
PHP采用XML-RPC构造Web Service实例教程
2014/07/16 PHP
详解php中空字符串和0之间的关系
2016/10/23 PHP
PHP number_format函数原理及实例解析
2020/07/14 PHP
php远程请求CURL实例教程(爬虫、保存登录状态)
2020/12/10 PHP
window.onload和$(function(){})的区别介绍
2013/10/30 Javascript
js模仿hover的具体实现代码
2013/12/30 Javascript
JS中数组重排序方法
2016/11/11 Javascript
JavaScript易错知识点整理
2016/12/05 Javascript
JS表单数据验证的正则表达式(常用)
2017/02/18 Javascript
vue实现验证码按钮倒计时功能
2018/04/10 Javascript
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
vue组件tabbar使用方法详解
2018/11/06 Javascript
使用JavaScript解析URL的方法示例
2019/03/01 Javascript
js实现上下左右键盘控制div移动
2020/01/16 Javascript
js实现单元格拖拽效果
2020/02/10 Javascript
vue+ts下对axios的封装实现
2020/02/18 Javascript
python实现用户登录系统
2016/05/21 Python
Python实现屏幕截图的两种方式
2018/02/05 Python
Python 3.6 中使用pdfminer解析pdf文件的实现
2019/09/25 Python
Pycharm安装并配置jupyter notebook的实现
2020/05/18 Python
python3爬虫中引用Queue的实例讲解
2020/11/24 Python
吃透移动端 Html5 响应式布局
2019/12/16 HTML / CSS
AmazeUI中各种的导航式菜单与解决方法
2020/08/19 HTML / CSS
校园安全演讲稿
2014/05/09 职场文书
预备党员公开承诺书
2014/05/28 职场文书
建筑院校毕业生求职信
2014/06/13 职场文书
学生吸烟检讨书
2014/09/14 职场文书
单位租房协议范本
2014/12/03 职场文书
2015年爱牙日活动总结
2015/03/23 职场文书
投资合作意向书范本
2015/05/08 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书
考生诚信考试承诺书(2016版)
2016/03/25 职场文书
为Java项目添加Redis缓存的方法
2021/05/18 Redis
Windows Server 2008配置防火墙策略详解
2022/06/28 Servers