TensorFlow - 使用动量优化器时为多个目标组合梯度?
TensorFlow - Combining gradients for multiple target objectives when using a momentum optimizer?
如果我使用的是使用动量的优化器(例如 AdamOptimizer
),并且我有一个图形在最后分裂导致我试图同时最小化的两个值,我可以使用 compute_gradients
twice attempting to minimize each value. This produces two separate sets of gradients. If I simply combine the two lists into one long list and use apply_gradients
在整个列表中,动量方面发生了什么?同一个变量可能会用两个相反的值更新两次。 TensorFlow 优化器是否考虑到这一点并将动量置于适当的中间地带?或者优化器是否将两个单独的梯度作为影响动量的两个单独的梯度更新调用(可能导致问题,因为它总是被最后调用,所以可能会受到青睐)?如果是这样,我应该如何考虑在应用渐变之前手动组合渐变?
您可以使用 "Joint loss" 来训练网络。
假设您有两个张量:loss1 和 loss2,因此您可以将它们相加,然后 运行 优化器对组合损失进行优化,例如 Adam(loss1 + loss2)。
如果我使用的是使用动量的优化器(例如 AdamOptimizer
),并且我有一个图形在最后分裂导致我试图同时最小化的两个值,我可以使用 compute_gradients
twice attempting to minimize each value. This produces two separate sets of gradients. If I simply combine the two lists into one long list and use apply_gradients
在整个列表中,动量方面发生了什么?同一个变量可能会用两个相反的值更新两次。 TensorFlow 优化器是否考虑到这一点并将动量置于适当的中间地带?或者优化器是否将两个单独的梯度作为影响动量的两个单独的梯度更新调用(可能导致问题,因为它总是被最后调用,所以可能会受到青睐)?如果是这样,我应该如何考虑在应用渐变之前手动组合渐变?
您可以使用 "Joint loss" 来训练网络。
假设您有两个张量:loss1 和 loss2,因此您可以将它们相加,然后 运行 优化器对组合损失进行优化,例如 Adam(loss1 + loss2)。