Смущает поведение `tf.cond`

Мне нужен условный поток управления в моем графике. Еслиpred являетсяTrue, граф должен вызвать опцию, которая обновляет переменную и затем возвращает ее, в противном случае она возвращает переменную без изменений. Упрощенная версия:

pred = tf.constant(True)
x = tf.Variable([1])
assign_x_2 = tf.assign(x, [2])
def update_x_2():
  with tf.control_dependencies([assign_x_2]):
    return tf.identity(x)
y = tf.cond(pred, update_x_2, lambda: tf.identity(x))
with tf.Session() as session:
  session.run(tf.initialize_all_variables())
  print(y.eval())

Тем не менее, я считаю, что обаpred=True а такжеpred=False привести к тому же результатуy=[2], что означает, что операция назначения также вызывается, когдаupdate_x_2 не выбранtf.cond, Как это объяснить? И как решить эту проблему?

Ответы на вопрос(2)

Ваш ответ на вопрос