当前位置:  开发笔记 > 人工智能 > 正文

张量流图执行顺序

如何解决《张量流图执行顺序》经验,为你挑选了1个好方法。

考虑代码:

#tensorflow graph
input  = tf.some_place_holder
func1  = tf.some_function .....(input)  
func2  = tf.some_function .....(func1)  
....

#code 1 
res1, res2 = sess.run([ func1, func2 ],feed_dict_input)

#code 2 
res1 = sess.run([ func1 ],feed_dict_input)  
res2 = sess.run([ func2 ],feed_dict_input)  

如果我运行代码2,func1会运行两次吗?即func1首先运行以获取res1并再次运行获取res2.

tensorflow是否足够智能以计算依赖关系func1和func2,以便将函数称为minium时间?



1> mrry..:

为了具体起见,我假设func1,并func2在你的例子是tf.Tensor对象.

在"代码1"中,值func1将被计算一次:相同的值将返回给用户并用于计算func2.

在"代码2"中,值func1将被计算两次:每次调用一次sess.run().

TensorFlow不会在调用之间缓存中间张量值tf.Session.run().原因很简单:在典型的神经网络工作负载(训练或推理)中,大多数中间值在图形运行之间变得无效,因为它们是输入的函数(从一步到另一步变化)和当前状态(在训练期间发生变化).如果要保存值以供以后使用,则必须将其显式分配给a tf.Variable,或将其存储在某些其他有状态对象中,例如a tf.FIFOQueue.

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有