Когда я запускаю следующий код (tf v1.12.0), я получаю либо 6.0 (x-›mul-›ident), 7.0 (x-›mul-›add-›ident, либо 9.0 (x-›add-›mul -›идент.).
Может кто-нибудь объяснить, почему порядок выполнения операций не контролируется tf.control_dependencies? Я бы подумал, что по крайней мере add_op будет выполнен до того, как что-либо в контексте управления будет рассмотрено.
tf.reset_default_graph()
x=tf.Variable(2.0)
add_op = tf.assign_add(x, 1)
mul_op = tf.assign(x, 3*x)
with tf.control_dependencies([add_op]):
out_op = tf.identity(mul_op)
init_op = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init_op)
print(sess.run([out_op]))
Спасибо!