我有一个TensorFlow计算图,表示损失张量L取决于2 tf.Variables,A和B.
我想在变量A(A + = L wrt A的梯度)上运行渐变上升,同时保持B固定,反之亦然 - 在B上运行渐变上升(B + = L wrt B的渐变),同时保持A固定。我该怎么做?
答案 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])
您可以在更新之间进行迭代。