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中的类学习笔记
Sep 23 Python
python判断图片宽度和高度后删除图片的方法
May 22 Python
Python实现购物车功能的方法分析
Nov 10 Python
基于python内置函数与匿名函数详解
Jan 09 Python
Python实现简单文本字符串处理的方法
Jan 22 Python
Python实现统计给定字符串中重复模式最高子串功能示例
May 16 Python
Flask框架信号用法实例分析
Jul 24 Python
python利用openpyxl拆分多个工作表的工作簿的方法
Sep 27 Python
python 使用while写猜年龄小游戏过程解析
Oct 07 Python
用python中的matplotlib绘制方程图像代码
Nov 21 Python
Numpy与Pytorch 矩阵操作方式
Dec 27 Python
在Keras中利用np.random.shuffle()打乱数据集实例
Jun 15 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
《PHP编程最快明白》第五讲:php目录、文件操作
2010/11/01 PHP
thinkPHP模板中函数的使用方法示例
2016/11/30 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
Yii框架数据库查询、增加、删除操作示例
2019/10/14 PHP
javascript开发技术大全-第3章 js数据类型
2011/07/03 Javascript
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
2013/01/11 Javascript
javascript时间函数基础介绍
2013/03/28 Javascript
js解决弹窗问题实现班级跳转DIV示例
2014/01/06 Javascript
Jquery插件分享之气泡形提示控件grumble.js
2014/05/20 Javascript
全面解析Bootstrap中nav、collapse的使用方法
2016/05/22 Javascript
JS实现Ajax的方法分析
2016/12/20 Javascript
jQuery手指滑动轮播效果
2016/12/22 Javascript
React如何利用相对于根目录进行引用组件详解
2017/10/09 Javascript
nodejs爬虫初试superagent和cheerio
2018/03/05 NodeJs
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
Vue.js 踩坑记之双向绑定
2018/05/03 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
2018/07/07 Javascript
解决Vue axios post请求,后台获取不到数据的问题方法
2018/08/11 Javascript
vue-cli3跨域配置的简单方法
2019/09/06 Javascript
JavaScript this关键字指向常用情况解析
2020/09/02 Javascript
[01:08:57]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第二场
2014/05/24 DOTA
简单分析Python中用fork()函数生成的子进程
2015/05/04 Python
python实现中文分词FMM算法实例
2015/07/10 Python
Python用于学习重要算法的模块pygorithm实例浅析
2018/08/16 Python
python属于跨平台语言码
2020/06/09 Python
shell程序中如何注释
2012/02/17 面试题
掌上明珠Java程序员面试总结
2016/02/23 面试题
五水共治一句话承诺
2014/05/30 职场文书
政府个人对照检查材料
2014/08/28 职场文书
新兵入伍心得体会
2014/09/04 职场文书
2015年五四青年节演讲稿
2015/03/18 职场文书
新学期感想
2015/08/10 职场文书
用position:sticky完美解决小程序吸顶问题的实现方法
2021/04/24 HTML / CSS
ubuntu下常用apt命令介绍
2022/06/05 Servers
详解ZABBIX监控ESXI主机的问题
2022/06/21 Servers