我想在tensorflow中有一个if语句;如果条件不满足,就什么也不会发生。
我尝试同时使用tf.case和tf.cond,但是它们都需要一个函数说明,该语句的评估结果为False。
op = tf.cond(tf.equal(x, y), true_fn=f1(), false_fn=lambda: None)
给我一个错误:ValueError:false_fn必须具有返回值。
答案 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))