python - 如果用 Optimizer 捕获梯度,它会计算两倍的梯度吗?

标签 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) 之类的东西?

最佳答案

您可以在使用 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/

相关文章:

python - 有没有类似于 tf.cond 但用于向量谓词的东西?

python - 通过代理使用 TLSv1.0 的 Scrapy 握手失败

python - 将逗号分隔的数据转换为不带 CSV 模块的列表

python - Pandas 删除任何字符串的行

matlab - 分类:处理弃权/拒绝类别

python - 有没有一种简单易用的方法来可视化高维数据?

python-3.x - 使用Python计算客户流失分数

python - 获得锁后检查 multiprocessing.Value 的值

python - Tensorflow 仅针对变量的某些元素进行最小化

python - 在 Tensorflow 和范围中重新分配变量