我最近遇到了一些训练性能瓶颈。我总是在摘要中添加很多直方图。我想知道通过先计算梯度然后重新最小化损失是否会计算两倍的梯度。简化的代码:
# 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)
之类的东西?
最佳答案
您可以在使用 compute_gradients
计算梯度后使用 apply_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/