考虑以下包含tensorflow tf.cond()的代码片段。
在两种情况下,bb 都是 False,理论上 zz 的计算不依赖于 xx,但tensorflow仍然要求为 xx 提供输入。尽管可以提供一个虚拟数组,但它必须与 yy 的形状匹配,并且不如 dict2 那样简洁。
有谁能建议如何在不提供 xx 值的情况下评估 zz(使用 tf.cond() 或其他任何方法)?
回答:
您可以将 xx 定义为 tf.Variable,并为其设置一个默认值(当 xx 未被赋予其他值时将使用此默认值)。需要注意几点:
- 尽管
xx不是占位符 – 您仍然可以通过feed_dict向其输入值,视其为占位符处理。 - 使用
validate_shape=False,这样您可以向xx输入任何形状的数据。 - 使用
trainable=False,这样xx不会被优化(否则,优化器可能会将其默认值更改为如Nan的值,这可能会导致问题)。 - 别忘了通过例如
tf.global_variables_initializer()来初始化xx的值。
以下是代码: