图依赖如何与`tf.cond`一起使用?

时间:2017-04-03 17:18:17

标签: tensorflow

假设True和False案例都有单独的依赖关系:

tensorflow是否假设两个依赖项都是必需的,因此处理True和False案例的完整子图?或者是这样:

  1. 处理布尔表达式的依赖关系,然后
  2. 处理tf.cond(...)
  3. 的True xor或False端的依赖项

1 个答案:

答案 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()