在优化器期间保持变量不变

时间:2015-12-27 05:35:29

标签: tensorflow

我有一个TensorFlow计算图,表示损失张量L取决于2 tf.Variables,A和B.

我想在变量A(A + = L wrt A的梯度)上运行渐变上升,同时保持B固定,反之亦然 - 在B上运行渐变上升(B + = L wrt B的渐变),同时保持A固定。我该怎么做?

1 个答案:

答案 0 :(得分:33)

tf.stop_gradient(tensor)可能就是你要找的东西。对于梯度计算目的,张量将被视为常数。你可以创造两个损失,不同的部分被视为常数。

另一个选择(通常更好)是创建2个优化器,但只显式优化变量子集,例如

train_a = tf.train.GradientDescentOptimizer(0.1).minimize(loss_a, var_list=[A])
train_b = tf.train.GradientDescentOptimizer(0.1).minimize(loss_b, var_list=[B])

您可以在更新之间进行迭代。