如果使用Optimizer捕获梯度,它将计算两倍的梯度吗?

时间:2019-04-15 09:38:54

标签: python tensorflow machine-learning gradient-descent

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

# 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)的东西吗?

1 个答案:

答案 0 :(得分:1)

您可以使用apply_gradients如下计算梯度后使用compute_gradients

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