Смущает поведение `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
, Как это объяснить? И как решить эту проблему?