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的Django框架中的通用视图
May 04 Python
python模块简介之有序字典(OrderedDict)
Dec 01 Python
Python跨文件全局变量的实现方法示例
Dec 10 Python
利用Opencv中Houghline方法实现直线检测
Feb 11 Python
python实现数据导出到excel的示例--普通格式
May 03 Python
Python List cmp()知识点总结
Feb 18 Python
利用python如何在前程无忧高效投递简历
May 07 Python
Python中新式类与经典类的区别详析
Jul 10 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
Aug 22 Python
python3中的eval和exec的区别与联系
Oct 10 Python
如何基于线程池提升request模块效率
Apr 18 Python
Python基于gevent实现文件字符串查找器
Aug 11 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
phpMyAdmin下载、安装和使用入门教程
2007/05/31 PHP
如何用php获取程序执行的时间
2013/06/09 PHP
CodeIgniter使用smtp服务发送html邮件的方法
2015/06/10 PHP
PHP重载基础知识回顾
2020/09/10 PHP
超级强大的表单验证
2006/06/26 Javascript
激活 ActiveX 控件
2006/10/09 Javascript
JavaScript中prototype为对象添加属性的误区介绍
2013/10/15 Javascript
javascript实现多级联动下拉菜单的方法
2015/02/06 Javascript
JavaScript中的分号插入机制详细介绍
2015/02/11 Javascript
基于jquery实现智能提示控件intellSeach.js
2016/03/17 Javascript
JavaScript实现水平进度条拖拽效果
2017/01/18 Javascript
JS 中LocalStorage和SessionStorage的使用
2017/08/17 Javascript
基于复选框demo(分享)
2017/09/27 Javascript
vue登录路由验证的实现
2017/12/13 Javascript
jQuery实现的鼠标响应缓冲动画效果示例
2018/02/13 jQuery
基于vue打包后字体和图片资源失效问题的解决方法
2018/03/06 Javascript
解决vue-router进行build无法正常显示路由页面的问题
2018/03/06 Javascript
浅谈TypeScript 用 Webpack/ts-node 运行的配置记录
2019/10/11 Javascript
[02:50]【扭转乾坤,只此一招】DOTA2永雾林渊版本开启新篇章
2020/12/22 DOTA
Python3基础之条件与循环控制实例解析
2014/08/13 Python
在Pycharm中项目解释器与环境变量的设置方法
2018/10/29 Python
Python如何计算语句执行时间
2019/11/22 Python
python三引号如何输入
2020/07/06 Python
python简单实现插入排序实例代码
2020/12/16 Python
HTML 5 标签、属性、事件及浏览器兼容性速查表 附打包下载
2012/10/20 HTML / CSS
HTML5 Canvas的事件处理介绍
2015/04/24 HTML / CSS
英国电动工具购买网站:Anglia Tool Centre
2017/04/25 全球购物
美国领先的奢侈美容零售商:Bluemercury
2017/07/26 全球购物
党支部公开承诺践诺书
2014/03/28 职场文书
竞选班长演讲稿400字
2014/08/22 职场文书
标准离婚协议书(2014版)
2014/10/05 职场文书
团支部组织委员竞选稿
2015/11/21 职场文书
六年级情感作文之500字
2019/10/23 职场文书
Nginx的rewrite模块详解
2021/03/31 Servers
JavaScript组合继承详解
2021/11/07 Javascript
MySQL利用UNION连接2个查询排序失效详解
2021/11/20 MySQL