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求两个list的差集、交集与并集的方法
Nov 01 Python
python: line=f.readlines()消除line中\n的方法
Mar 19 Python
python中yaml配置文件模块的使用详解
Apr 27 Python
Python实现的求解最大公约数算法示例
May 03 Python
在Django中输出matplotlib生成的图片方法
May 24 Python
python的格式化输出(format,%)实例详解
Jun 01 Python
python最长回文串算法
Jun 04 Python
Python读写文件基础知识点
Jun 10 Python
pygame实现俄罗斯方块游戏(基础篇2)
Oct 29 Python
python读取hdfs上的parquet文件方式
Jun 06 Python
python实现银行账户系统
Feb 22 Python
浅析Python模块之间的相互引用问题
Feb 26 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二维数组排序的函数分享
2014/01/17 PHP
linux下实现定时执行php脚本
2015/02/13 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
!DOCTYPE声明对JavaScript的影响分析
2010/04/12 Javascript
Array.prototype.slice 使用扩展
2010/06/09 Javascript
THREE.JS入门教程(6)创建自己的全景图实现步骤
2013/01/25 Javascript
使用jQuery jqPlot插件绘制柱状图
2014/12/18 Javascript
js实现遮罩层弹出框的方法
2015/01/15 Javascript
JavaScript入门系列之知识点总结
2016/03/24 Javascript
AngularJs ng-repeat 嵌套如何获取外层$index
2016/09/21 Javascript
微信小程序 增、删、改、查操作实例详解
2017/01/13 Javascript
vue的mixins属性详解
2018/03/14 Javascript
JavaScript选择排序算法原理与实现方法示例
2018/08/06 Javascript
利用原生JavaScript实现造日历轮子实例代码
2019/05/08 Javascript
js 实现 list转换成tree的方法示例(数组到树)
2019/08/18 Javascript
vue3.0实现点击切换验证码(组件)及校验
2020/11/18 Vue.js
举例讲解Python中装饰器的用法
2015/04/27 Python
Python3.5 创建文件的简单实例
2018/04/26 Python
Python系统监控模块psutil功能与经典用法分析
2018/05/24 Python
python set内置函数的具体使用
2019/07/02 Python
python Kmeans算法原理深入解析
2019/08/23 Python
Django之富文本(获取内容,设置内容方式)
2020/05/21 Python
python框架flask入门之环境搭建及开启调试
2020/06/07 Python
PyCharm2020.1.1与Python3.7.7的安装教程图文详解
2020/08/07 Python
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
SkinCeuticals官网:美国药妆品牌
2018/04/19 全球购物
ESDlife健康生活易:身体检查预订、搜寻及比较
2019/05/10 全球购物
请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
2015/07/16 面试题
国际商务系学生个人的自我评价
2013/11/26 职场文书
爱之链教学反思
2014/04/30 职场文书
市政管理求职信范文
2014/05/07 职场文书
学校搬迁方案
2014/06/15 职场文书
店铺转让协议书
2014/12/02 职场文书
社区敬老月活动总结
2015/05/07 职场文书
辩护词格式
2015/05/22 职场文书
2015年中学体育教师工作总结
2015/10/23 职场文书