假设True和False案例都有单独的依赖关系:
tensorflow是否假设两个依赖项都是必需的,因此处理True和False案例的完整子图?或者是这样:
tf.cond(...)
?答案 0 :(得分:2)
tf.cond()
函数用于执行只有一个的真或假分支,在评估布尔表达式后。例如,如果你写了如下内容:
v = tf.Variable(0)
condition = tf.placeholder(tf.bool, shape=[])
op_to_run = tf.cond(condition, lambda: v.assign_add(1), lambda: v.assign_sub(1))
sess = tf.Session()
sess.run(tf.global_variables_initializer())
print(sess.run(v)) # ==> "0"
for _ in range(3):
sess.run(op_to_run, feed_dict={condition: True})
print(sess.run(v)) # ==> "3"
for _ in range(5):
sess.run(op_to_run, feed_dict={condition: False})
print(sess.run(v)) # ==> "-2"
但请注意,您必须确保任何副作用操作都定义为 lambda
(或等效的函数),并传递给tf.cond()
。如果副作用操作定义为在之外<{1}},则无条件执行:
tf.cond()