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