张量流中的if语句(无其他)

时间:2019-06-23 01:04:25

标签: python python-3.x tensorflow

我想在tensorflow中有一个if语句;如果条件不满足,就什么也不会发生。

我尝试同时使用tf.case和tf.cond,但是它们都需要一个函数说明,该语句的评估结果为False。

op = tf.cond(tf.equal(x, y), true_fn=f1(), false_fn=lambda: None)

给我一​​个错误:ValueError:false_fn必须具有返回值。

2 个答案:

答案 0 :(得分:0)

在TF 1.x上,我将使用tf.no_op指定不执行任何操作的虚拟OP:

ops = tf.cond(tf.equal(x, y), true_fn=f, false_fn=lambda: tf.no_op()) 

在TF 2.x上,由于渴望执行,您只能将lambda: None传递给false_fn


最小代码示例

import tensorflow as tf

x, y, z = tf.constant(1), tf.constant(1), tf.constant(2)
op1 = tf.cond(
    tf.equal(x, y), true_fn=lambda: tf.print(x), false_fn=lambda: tf.no_op())
op2 = tf.cond(
    tf.equal(x, z), true_fn=lambda: tf.print(x), false_fn=lambda: tf.no_op())

with tf.Session() as sess:
    sess.run(op1)  # 1
    sess.run(op2)  # does nothing

答案 1 :(得分:-1)

您可以使用tf.identy(tf)

op = tf.cond(tf.equal(x, y), true_fn=f1(), false_fn=tf.identy(tf))

@see https://www.tensorflow.org/api_docs/python/tf/identity