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 Web开发框架Django
Jun 30 Python
python使用xmlrpclib模块实现对百度google的ping功能
Jun 02 Python
Python基于回溯法子集树模板实现图的遍历功能示例
Sep 05 Python
Python 文件操作的详解及实例
Sep 18 Python
利用Python正则表达式过滤敏感词的方法
Jan 21 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
Apr 28 Python
keras 如何保存最佳的训练模型
May 25 Python
对python中list的五种查找方法说明
Jul 13 Python
python获取系统内存占用信息的实例方法
Jul 17 Python
python switch 实现多分支选择功能
Dec 21 Python
Python+tkinter实现高清图片保存
Mar 13 Python
LyScript实现绕过反调试保护的示例详解
Aug 14 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
利用curl 多线程 模拟 并发的详解
2013/06/14 PHP
ThinkPHP 表单自动验证运用示例
2014/10/13 PHP
PHP使用内置函数生成图片的方法详解
2016/05/09 PHP
JavaScript 学习笔记(十三)Dom创建表格
2010/01/21 Javascript
jQuery仿Flash上下翻动的中英文导航菜单实例
2015/03/10 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
2015/05/09 Javascript
jQuery插件开发精品教程让你的jQuery提升一个台阶
2016/01/27 Javascript
JS实现动态生成表格并提交表格数据向后端
2020/11/25 Javascript
JavaScript数据结构与算法之栈与队列
2016/01/29 Javascript
原生JavaScript实现动态省市县三级联动下拉框菜单实例代码
2016/02/03 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
jQuery简单实现点击文本框复制内容到剪贴板上的方法
2016/08/01 Javascript
如何制作幻灯片(代码分享)
2017/01/06 Javascript
react-router实现跳转传值的方法示例
2017/05/27 Javascript
JS中图片压缩的方法小结
2017/11/14 Javascript
angular 实现的输入框数字千分位及保留几位小数点功能示例
2018/06/19 Javascript
node.js使用express框架进行文件上传详解
2019/03/03 Javascript
基于JavaScript判断两个对象内容是否相等
2020/01/10 Javascript
JS实现音量控制拖动
2020/01/15 Javascript
js+css3实现简单时钟特效
2020/09/13 Javascript
python的urllib模块显示下载进度示例
2014/01/17 Python
在Python中操作时间之strptime()方法的使用
2020/12/30 Python
python如何实现内容写在图片上
2018/03/23 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
2019/08/26 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
2020/01/10 Python
python中如何打包用户自定义模块
2020/09/23 Python
python 写一个性能测试工具(一)
2020/10/24 Python
实现向右循环移位
2014/07/31 面试题
餐厅经理岗位职责和岗位目标
2014/02/13 职场文书
小学家长学校培训材料
2014/08/24 职场文书
小学生放飞梦想演讲稿
2014/08/26 职场文书
意外伤害赔偿协议书范本
2014/09/28 职场文书
个人买房协议书范本
2014/10/06 职场文书
团员个人总结
2015/02/26 职场文书
难以忽视的真相观后感
2015/06/05 职场文书
详解Python函数print用法
2021/06/18 Python