首页 > 解决方案 > tensorflow中的if语句(没有else)

问题描述

我想在 tensorflow 中有一个 if 语句;如果不满足条件,则不会发生任何事情。

我尝试同时使用 tf.case 和 tf.cond,但两者都需要一个函数的规范,它的语句评估为 False。

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

给我一个错误: ValueError: false_fn must have a return value。

标签: pythonpython-3.xtensorflow

解决方案


在 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

推荐阅读