tensorflow学习--sess.run()
---恢复内容开始---
当我们编写tensorflow代码时, 总是定义好整个计算图,然后才调用sess.run()去执行整个定义好的计算图, 那么有两个问题:一是当执行sess.sun()的时候, 程序是否执行了计算图上的所有节点呢?二是sees.run()中的fetch, 为了取回(Fetch)操作的输出内容, 我们在sess.run()里面传入tensor, 那这些tensor的先后顺序会影响最后的结果嘛?比如有些tensor是有先后执行关系的,如果置于后面,会重复计算嘛?
请看实验:
import tensorflow as tf
state = tf.Variable(0.0,dtype=tf.float32)
one = tf.constant(1.0,dtype=tf.float32)
new_val = tf.add(state, one)
update = tf.assign(state, new_val) #返回tensor, 值为new_val
update2 = tf.assign(state, 10000) #没有fetch,便没有执行
init = tf.initialize_all_variables()
with tf.Session() as sess:
sess.run(init)
for _ in range(3):
print(sess.run([update,state, new_val]))
print("--------")
程序输出的结果为:
[1.0, 1.0, 1.0]
--------
[2.0, 2.0, 2.0]
--------
[3.0, 3.0, 3.0]
--------
从结果可知:
首先, update2这个tensor并没有执行,因为它不在sess.run()的fetch列表中。
对于sess.sun(fetch), 只有fetch里的图元素, 才会被执行, 不在fetch中的图节点是不会执行的
其次, 当我们将sess.run()里面的fetch列表中的节点打乱时, 取出来的值依然是一次流程图计算出来的结果
当sess.run() 里面的fetch是一个list时, 无论是update在前, 还是state在前, 不会执行update之后看到state在update后面就在执行一次state, 都是在这个list中的节点在流程图中全部执行完之后在取值的。
在看实验:
import tensorflow as tf
state = tf.Variable(0.0,dtype=tf.float32)
one = tf.constant(1.0,dtype=tf.float32)
new_val = tf.add(state, one) # 1
update = tf.assign(state, new_val) #返回tensor, 值为new_val #update 1 # state 1
update2 = tf.assign(state, 10000) #没有fetch,便没有执行 # update2 10000 # state 10000
init = tf.initialize_all_variables()
with tf.Session() as sess:
sess.run(init)
for _ in range(1):
print(sess.run([state, new_val, update2, update]))
print("--------")
结果为:
[10001.0, 10001.0, 10001.0, 10001.0]
--------
分析: 程序不是从上到下依次执行的, tensorflow里面是按照计算图而流动计算的, 画出程序的计算图就可以知道, 最先开始执行的操作是update2这个节点, 然后是add这个节点。 最后tf.assign()是当流程图都走完之后进行取值的
---恢复内容结束---
转载于:https://www.cnblogs.com/IUNI/p/9415864.html
tensorflow学习--sess.run()相关推荐
- tensorflow中sess.run()越来越慢的问题解决
tensorflow中sess.run()越来越慢的问题解决 在我们运行tf.Session.run()的次数越多,会发现程序的输出越来越慢,这是因为直接用run去读取数据是很慢的,所以run越多,就 ...
- 坑 之 tensorflow使用sess.run处理图片时越来越慢,占用内存越来越大的问题
最近在项目中需要使用tensorflow来对图片进行离线预处理,但是使用sess.run时代码越来越慢,最后几分钟才能处理一张图片,这可怎么能行,我的数据集有数万张图片...... 原始代码 def ...
- tensorflow的sess.run的参数执行顺序
sess.run的多个参数执行 是将整个计算图中所有需要计算的节点,计算完全后一次行输出, 两次print顺序不同,结果不同 import tensorflow as tf# 基础数据 state1 ...
- tensorflow中sess.run第一个参数衣服不能随便穿
如图所示: 纬度从2维变成3维了 ,导致结果错误连续出现 本质是自己对sess.run第一个参数没有太注意,习惯性的加了个列表的外衣:导致维度增加:
- tensorflow中sess.run执行原理及常见问题
1.执行原理: 首先:对于sess.sun(fetch), 只有fetch里的图元素, 才会被执行, 不在fetch中的图节点是不会执行的: 其次:sess.run()里面的执行顺序是按fetch列表 ...
- tensorflow中sess.run()
Session()方法 tensorflow的内核使用更加高效的C++作为后台,以支撑它的密集计算.tensorflow把前台(即python程序)与后台程序之间的连接称为"会话(Sessi ...
- tensorflow学习笔记(1):sess.run()
原址:https://www.2cto.com/kf/201610/559887.html session.run() session.run([fetch1, fetch2]) import ten ...
- tensorflow学习笔记(四十五):sess.run(tf.global_variables_initializer()) 做了什么?
当我们训练自己的神经网络的时候,无一例外的就是都会加上一句 sess.run(tf.global_variables_initializer()) ,这行代码的官方解释是 初始化模型的参数.那么,它到 ...
- tensorflow越跑越慢_tensorflow sess.run()越来越慢的原因分析及其解决方法
最近在训练一个检测器,由于训练数据不足因此需要做数据增强,那么我这边写了代码去做数据增强(这部分将会在下一篇进行介绍),其中使用到了tensorflow会话获取数据,可是问题出现了!gtx 1080t ...
最新文章
- else if mybatis 嵌套_mybatis踩坑之——foreach循环嵌套if判断
- weka arff稀疏数据写法
- linux 卸载ava,linux下配置ava环境变量.doc
- zookeper安装_ZooKeeper的安装与部署
- 飞书成小米数万员工协作工具,雷军:越用越顺手
- 让游戏达到60帧真的重要吗?
- python软件下载教程-使用最方便的计算机编程软件,Python下载使用完美教程
- C/C++浮点数在内存中的存储方式《转》
- Leetcode669.Trim a Binary Search Tree修建二叉树
- 一、Java多线程基础
- 全是宝!20款优质高效的在线协作工具任你挑,就是这么强大!
- java 入门面试题
- Axure 9 实战案例,动态面板的应用 3,京东的拖动拼图登录验证
- SpringMVC文件下载IOException: UT010029: Stream is closed
- 2021年UI设计面试问题及答案解析
- 华尔街持续唱多美股市场,微美全息发布VR设备领涨科技股
- 华为电脑怎么把虚拟化打开_【解决方案】华为虚拟化解决方案
- Python 算法设计与分析 投资问题
- 边云协同的优点_云边协同的现实意义
- ubuntu下route命令详解