似乎tf.cond(cond, fn1, fn2)
执行两个分支的可能依赖关系,因此当且仅当条件保持必须放入函数fn1 fn2时,我们想要执行的任何计算。
然而,我对fn究竟是什么感到困惑。 tensorflow中的每个变量/ op都应该是计算图的一个节点,但fn实际上是一个python函数。这导致了许多问题。例如,每次执行sess.run
时是否重新评估此函数?这个函数每次都能返回不同的计算图吗?是否可以在其中定义占位符,如果不是,如何避免向占位符提供值,我们知道,例如,在不同输入之间选择切换变量时,将不会使用这些占位符?
答案 0 :(得分:1)
传递给tf.cond
的函数仅在定义op时运行,而不是在图执行期间运行。而both of them are run,就我所见,恰好一次。函数本身只是一种准确指示哪些操作应具有条件执行行为的方法:注意围绕每个函数调用的context_t.Enter()
/ context_t.Exit()
调用。
希望澄清事情。这些函数是在图形定义期间对ops进行分组的有用方法。 TensorFlow图中没有功能执行魔法。