在tf.cond内允许哪些类型的操作

时间:2017-02-07 22:32:30

标签: tensorflow

似乎tf.cond(cond, fn1, fn2)执行两个分支的可能依赖关系,因此当且仅当条件保持必须放入函数fn1 fn2时,我们想要执行的任何计算。

然而,我对fn究竟是什么感到困惑。 tensorflow中的每个变量/ op都应该是计算图的一个节点,但fn实际上是一个python函数。这导致了许多问题。例如,每次执行sess.run时是否重新评估此函数?这个函数每次都能返回不同的计算图吗?是否可以在其中定义占位符,如果不是,如何避免向占位符提供值,我们知道,例如,在不同输入之间选择切换变量时,将不会使用这些占位符?

1 个答案:

答案 0 :(得分:1)

传递给tf.cond的函数仅在定义op时运行,而不是在图执行期间运行。而both of them are run,就我所见,恰好一次。函数本身只是一种准确指示哪些操作应具有条件执行行为的方法:注意围绕每个函数调用的context_t.Enter() / context_t.Exit()调用。

希望澄清事情。这些函数是在图形定义期间对ops进行分组的有用方法。 TensorFlow图中没有功能执行魔法。