Tensorflow control_dependencies在优化器中无法正常工作

时间:2018-08-03 04:44:49

标签: python tensorflow

我正在研究一种生成对抗模型,在该模型中,我必须在一张图中的两个目标变量上依次最小化两个目标函数。为了说明这个问题,我将代码简化为以下代码:

a = tf.Variable(1.0)
b = tf.Variable(2.0)

f_a = a*a*b
f_b = a*b*b

opt_a = tf.train.GradientDescentOptimizer(learning_rate=0.1)
opt_b = tf.train.GradientDescentOptimizer(learning_rate=0.1)

op_a = opt_a.minimize(loss=f_a, var_list=[a])
with tf.control_dependencies([op_a]):
    op_b = opt_b.minimize(loss=f_b, var_list=[b])

session.run(tf.global_variables_initializer())
# session.run([a, b]) results in [1.0, 2.0]
session.run(op_b)
# session.run([a, b]) results in [0.6, 1.68] but not [0.6, 1.76]

预期的行为是,首先更新变量“ a”,然后更新变量“ b”,如下所示:

  1. d(f_a)/ da = 2 * a * b,因此“ a”更新为1.0-0.1 *(2 * 1.0 * 2.0)= 0.6
  2. d(f_b)/ db = 2 * a * b,因此“ b”应更新为2.0-0.1 *(2 * 0.6 * 2.0)= 1.76

是错误还是我错过了什么?

0 个答案:

没有答案