此页面由 Cloud Translation API 翻译。
Switch to English

tf.cond

TensorFlow 1版 GitHub上查看源代码

返回true_fn()如果断言pred是真实的其他false_fn()

用在笔记本电脑

使用教程

true_fnfalse_fn输出张量都返回列表。 true_fnfalse_fn必须具有的输出相同的非零数量和类型。

虽然此行为是TensorFlow的数据流模型是一致的,它经常感到惊讶谁预期懒惰语义用户。请看下面的程序:

 z = tf.multiply(a, b)
result = tf.cond(x < y, lambda: tf.add(x, z), lambda: tf.square(y))
 

如果x < ytf.add操作将被执行, tf.square操作将不被执行。由于z需要用于中的至少一个分支cond中, tf.multiply操作总是执行时,无条件。

需要注意的是cond电话true_fnfalse_fn 一次 (调用内部cond ,而不是在所有期间Session.run() cond针一起期间创建的图形片段true_fnfalse_fn具有一些附加图形节点的呼叫,以确保正确的分支被取决于的值执行pred

tf.cond支持嵌套结构如在实施tensorflow.python.util.nest 。既true_fnfalse_fn必须返回相同的(可能是嵌套)值列表,元组,和/或命名元组的结构。辛格尔顿列表和元组形成唯一的例外:当返回true_fn和/或false_fn ,他们是隐含解压缩到一个值。

pred 标量确定是否要返回的结果true_fnfalse_fn
true_fn 如果预计值是真实的调用执行。
false_fn 如果预计值是假的调用执行。
name 可选的名称前缀为返回的张量。

张量返回通过调用要么true_fnfalse_fn 。如果可调用返回一个单列表,该元素是从列表中提取。

TypeError 如果true_fnfalse_fn是不可调用的。
ValueError 如果true_fnfalse_fn不返回相同数量的张量,或不同类型的返回张量。

例:

 x = tf.constant(2)
y = tf.constant(5)
def f1(): return tf.multiply(x, 17)
def f2(): return tf.add(y, 23)
r = tf.cond(tf.less(x, y), f1, f2)
# r is set to f1().
# Operations in f2 (e.g., tf.add) are not executed.