我最近遇到了一些训练性能瓶颈。我总是在摘要中添加很多直方图。我想知道是否通过先计算梯度然后重新最小化损失将计算出两倍的梯度。简化代码:

# layers
...
# optimizer
loss = tf.losses.mean_squared_error(labels=y_true, predictions=logits)
opt = AdamOptimizer(learning_rate)
# collect gradients
gradients = opt.compute_gradients(loss)
# train operation
train_op = opt.minimize(loss)
...
# merge summary
...


优化器中是否存在直接使用梯度的最小化方法?是类似opt.minimize(gradients)而不是opt.minimize(loss)的东西?

最佳答案

在使用apply_gradients计算梯度之后,可以使用compute_gradients,如下所示:

grads_and_vars = opt.compute_gradients(loss)
train_op = opt.apply_gradients(grads_and_vars)

关于python - 如果使用Optimizer捕获梯度,它将计算两倍的梯度吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55686368/

10-12 19:33