---恢复内容开始---

当我们编写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()相关推荐

  1. tensorflow中sess.run()越来越慢的问题解决

    tensorflow中sess.run()越来越慢的问题解决 在我们运行tf.Session.run()的次数越多,会发现程序的输出越来越慢,这是因为直接用run去读取数据是很慢的,所以run越多,就 ...

  2. 坑 之 tensorflow使用sess.run处理图片时越来越慢,占用内存越来越大的问题

    最近在项目中需要使用tensorflow来对图片进行离线预处理,但是使用sess.run时代码越来越慢,最后几分钟才能处理一张图片,这可怎么能行,我的数据集有数万张图片...... 原始代码 def ...

  3. tensorflow的sess.run的参数执行顺序

    sess.run的多个参数执行 是将整个计算图中所有需要计算的节点,计算完全后一次行输出, 两次print顺序不同,结果不同 import tensorflow as tf# 基础数据 state1 ...

  4. tensorflow中sess.run第一个参数衣服不能随便穿

    如图所示: 纬度从2维变成3维了 ,导致结果错误连续出现 本质是自己对sess.run第一个参数没有太注意,习惯性的加了个列表的外衣:导致维度增加:

  5. tensorflow中sess.run执行原理及常见问题

    1.执行原理: 首先:对于sess.sun(fetch), 只有fetch里的图元素, 才会被执行, 不在fetch中的图节点是不会执行的: 其次:sess.run()里面的执行顺序是按fetch列表 ...

  6. tensorflow中sess.run()

    Session()方法 tensorflow的内核使用更加高效的C++作为后台,以支撑它的密集计算.tensorflow把前台(即python程序)与后台程序之间的连接称为"会话(Sessi ...

  7. tensorflow学习笔记(1):sess.run()

    原址:https://www.2cto.com/kf/201610/559887.html session.run() session.run([fetch1, fetch2]) import ten ...

  8. tensorflow学习笔记(四十五):sess.run(tf.global_variables_initializer()) 做了什么?

    当我们训练自己的神经网络的时候,无一例外的就是都会加上一句 sess.run(tf.global_variables_initializer()) ,这行代码的官方解释是 初始化模型的参数.那么,它到 ...

  9. tensorflow越跑越慢_tensorflow sess.run()越来越慢的原因分析及其解决方法

    最近在训练一个检测器,由于训练数据不足因此需要做数据增强,那么我这边写了代码去做数据增强(这部分将会在下一篇进行介绍),其中使用到了tensorflow会话获取数据,可是问题出现了!gtx 1080t ...

最新文章

  1. else if mybatis 嵌套_mybatis踩坑之——foreach循环嵌套if判断
  2. weka arff稀疏数据写法
  3. linux 卸载ava,linux下配置ava环境变量.doc
  4. zookeper安装_ZooKeeper的安装与部署
  5. 飞书成小米数万员工协作工具,雷军:越用越顺手
  6. 让游戏达到60帧真的重要吗?
  7. python软件下载教程-使用最方便的计算机编程软件,Python下载使用完美教程
  8. C/C++浮点数在内存中的存储方式《转》
  9. Leetcode669.Trim a Binary Search Tree修建二叉树
  10. 一、Java多线程基础
  11. 全是宝!20款优质高效的在线协作工具任你挑,就是这么强大!
  12. java 入门面试题
  13. Axure 9 实战案例,动态面板的应用 3,京东的拖动拼图登录验证
  14. SpringMVC文件下载IOException: UT010029: Stream is closed
  15. 2021年UI设计面试问题及答案解析
  16. 华尔街持续唱多美股市场,微美全息发布VR设备领涨科技股
  17. 华为电脑怎么把虚拟化打开_【解决方案】华为虚拟化解决方案
  18. Python 算法设计与分析 投资问题
  19. 边云协同的优点_云边协同的现实意义
  20. ubuntu下route命令详解

热门文章

  1. 用计算机确定照片的黑白灰,快乐学修图(4) 黑白灰,照片中调色密码
  2. 为什么要使用多线程技术
  3. nginx中斜杠(/)详解
  4. 目前市场上的全画幅的数码相机
  5. 现货交易技巧让投资事半功倍
  6. 程序员 6 个接私活的网站,有技术就有钱!
  7. ArcGisEngineForJava开发
  8. 线上直播大会怎么做?选择什么平台最好
  9. 中国电声元件行业运行态势分析及投资建议研究报告2022年版
  10. atomiclong 初始化_突击并发编程JUC系列-原子更新AtomicLong