我有一个损失张量 L 的 TensorFlow 计算图,它取决于 2 个 tf.Variables、A 和 B。
我想在保持 B 固定的同时在变量 A 上运行梯度上升(A+=L 与 A 的梯度),反之亦然 - 在 B 上运行梯度上升(B+=L 与 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])
并且您可以在更新时在它们之间进行迭代。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)