python - 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。
解决方案
在 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
推荐阅读
- floating-point - IEEE 754 中的四舍五入运算结果
- java - 休眠实用程序类
- python - 使用 zip() 对元组列表进行排序时,有时不支持“<”
- r - 将命名向量转换为 data.frame R
- java - 为什么 java wrapper 没有在 macOS 上的 JAVA_HOME 中选择正确的版本?
- javascript - 调整窗口大小时如何防止div移动?
- asp.net - Mono 对 ASP.NET Web 窗体的支持的未来是什么?
- sorting - Kotlin 的 sortedBy 是否保持相等值的顺序?
- c - 尝试按文件和文件夹分隔 struct stat 时,为什么我有两个相同的数组?
- shell - 循环使用逗号分隔的子字符串,而不会中断空格