tensorflow的计算图总结


Posted in Python onJanuary 12, 2020

计算图

在 TensorFlow 中用计算图来表示计算任务。 计算图,是一种有向图,用来定义计算的结构,实际上就是一系列的函数的组合。 用图的方式,用户通过用一些简单的容易理解的数学函数组件,就可以建立一个复杂的运算

在 TensorFlow 使用图,分为两步:建立计算图 和 执行图

图,在形式上由结点 Nodes 和边 Edges 组成。 - Nodes,用圆圈表示,代表一些对数据进行的计算或者操作(Operation)。 - Edges,用箭头表示,是操作之间传递的实际值(Tensor)

建立图

graph = tf.Graph()

访问上下文管理器

with graph.as_default():

用 with 表示我们用 context manager 告诉 TensorFlow 我们要向某个具体的 graph 添加 Op 了

执行图图必须在会话(Session)里被启动,会话(Session)将图的 op 分发到 CPU 或 GPU 之类的设备上,同时提供执行 op 的方法,这些方法执行后,将产生的张量(tensor)返回

## 开启session

sess = tf.Session()`

一旦开启了 Session,就可以用 run() 来计算想要的 Tensor 的值

用完会话,记得关掉

sess.close()

Fetches

fetches是session.run()的一个参数,它可以接收任何一个我们想要执行的op或者Tensor,或者他们对应的list结构。

  • 如果是tensor,那么session.run()输出的就是一个Numpy 数组
  • 如果是Op,那么session.run()输出的就是None

比如:sess.run(b)就是告诉Session要把计算b所需要的结点都找到按顺序执行并且输出结果。

全局变量初始化

tf.global_variables_initializer()

表示将所有定义的Variable变量都准备好,以便于后续使用,这个Op也可以传给给session.run.比如:

init = tf.global_variables_initializer()
…
sess.run(init)

张量Tensor和OP

在tensorflow中使用tensor来表示所有的数据结构,计算图中操作Op结点之间传递的都是Tensor

  • 定义tensor时可以直接使用numpy传递给Op结点,因为tensorflow的Op可以将python的数据类型转化为tensor包括numbers,booleans,strings或者list。
  • 图中的任何结点都叫做Operation简称:Op
  • 每个Op的输出会被传递到其他Op或者sess.run()

Variable

Variable,变量是维护图执行过程中的状态信息的,需要它来保持和更新参数数值,是需要动态调整的。

  • Tensor 和Operation都是一成不变的,而Variable是可以随着时间改变的
  • Variables可以用在任何使用tensor的Op中,它当前的值就会被传递给使用它的Op
  • Variable通常的初始值是一些很大的0,1或者随机值tensor,或者内置op:tf.zeros(),tf.ones()等
  • Variable在graph中,状态由session管理,也是在session中进行初始化,session可以追踪variable的当前值是多少。
  • session可以只初始化一部分variable
  • 使用tf.variables_initializer,传入初始化变量列表
  • variable的值是可以被改变的
  • 比如使用variable.assign(variable),或者variable.assign_add(1)
  • 每个session维护独立的variable变量值,同一个variable不同的session值可以是不同的。
  • 当各种Optimizer优化器训练机器学习模型时,variable就会随之改变,当使用variable中的trainable=False属性可以不被Optimizer改变。

name_scopes

  • name_sopes可以用来管理图,可以把一组Op放到一个组块中

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的模块和包概念介绍
Apr 13 Python
Python标准库defaultdict模块使用示例
Apr 28 Python
Python通过DOM和SAX方式解析XML的应用实例分享
Nov 16 Python
Python爬取网易云音乐上评论火爆的歌曲
Jan 19 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
Jun 01 Python
基于Python列表解析(列表推导式)
Jun 23 Python
浅谈pycharm的xmx和xms设置方法
Dec 03 Python
Python 列表去重去除空字符的例子
Jul 20 Python
Python3多线程版TCP端口扫描器
Aug 31 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
Apr 24 Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
Jun 12 Python
Python selenium如何打包静态网页并下载
Aug 12 Python
python利用JMeter测试Tornado的多线程
Jan 12 #Python
Django 批量插入数据的实现方法
Jan 12 #Python
python处理RSTP视频流过程解析
Jan 11 #Python
pyftplib中文乱码问题解决方案
Jan 11 #Python
python实现实时视频流播放代码实例
Jan 11 #Python
python3下pygame如何实现显示中文
Jan 11 #Python
Pytorch 实现sobel算子的卷积操作详解
Jan 10 #Python
You might like
印尼林东PWN黄金曼特宁咖啡豆:怎么冲世界上最醇厚的咖啡冲煮教程
2021/03/03 冲泡冲煮
php中把美国时间转为北京时间的自定义函数分享
2014/07/28 PHP
php获取指定日期之间的各个周和月的起止时间
2014/11/24 PHP
PHP操作FTP类 (上传、下载、移动、创建等)
2016/03/31 PHP
php接口隔离原则实例分析
2019/11/11 PHP
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
2007/08/21 Javascript
IE iframe的onload方法分析小结
2010/01/07 Javascript
node.js中的fs.lchownSync方法使用说明
2014/12/16 Javascript
JavaScript中exec函数用法实例分析
2015/06/08 Javascript
JS+CSS实现简易的滑动门效果代码
2015/09/24 Javascript
分享纯手写漂亮的表单验证
2015/11/19 Javascript
javascript表单处理具体实现代码(表单、链接、按钮)
2016/05/07 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
2016/08/05 Javascript
JS基于面向对象实现的拖拽功能示例
2016/12/20 Javascript
使用Fullpage插件快速开发整屏翻页的页面
2017/09/13 Javascript
ionic grid(栅格)九宫格制作详解
2018/06/30 Javascript
vue实现路由监听和参数监听
2019/10/29 Javascript
vue 输入电话号码自动按3-4-4分割功能的实现代码
2020/04/30 Javascript
JS可断点续传文件上传实现代码解析
2020/07/30 Javascript
[14:19]2018年度COSER大赛-完美盛典
2018/12/16 DOTA
python和shell变量互相传递的几种方法
2013/11/20 Python
Python基于有道实现英汉字典功能
2015/07/25 Python
python 去除二维数组/二维列表中的重复行方法
2019/01/23 Python
Python集中化管理平台Ansible介绍与YAML简介
2019/06/12 Python
python os.fork() 循环输出方法
2019/08/08 Python
python处理RSTP视频流过程解析
2020/01/11 Python
HTML5-WebSocket实现聊天室示例
2016/12/15 HTML / CSS
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
2017/01/05 HTML / CSS
Giglio德国网上精品店:奢侈品服装和配件
2016/09/23 全球购物
用C或者C++语言实现SOCKET通信
2015/02/24 面试题
简短的公司员工自我评价分享
2013/11/13 职场文书
结婚邀请函范文
2014/01/14 职场文书
坚守艰苦奋斗精神坚决反对享乐主义整改措施
2014/09/17 职场文书
卖房授权委托书样本
2014/10/05 职场文书
一些让Python代码简洁的实用技巧总结
2021/08/23 Python
阿里面试Nacos配置中心交互模型是push还是pull原理解析
2022/07/23 Java/Android