gpt4 book ai didi

tensorflow - opt.apply_gradients() 在 TensorFlow 中做什么?

转载 作者:行者123 更新时间:2023-12-02 23:59:31 24 4
gpt4 key购买 nike

文档对此不太清楚。我认为通过 opt.compute_gradients(E, [v]) 可以获得的梯度包含每个元素的 ∂E/∂x = g(x) xv 存储的张量。 opt.apply_gradients(grads_and_vars) 本质上执行的是 x ← -η·g(x),其中 η 是学习率?这意味着如果我想向变量添加正加性变化p,我需要更改g(x) ← g(x) - (1/η) p,例如像这样:

opt = tf.train.GradientDescentOptimizer(learning_rate=l)
grads_and_vars = opt.compute_gradients(loss, var_list)

for l, gv in enumerate(grads_and_vars):
grads_and_vars[l] = (gv[0] - (1/l) * p, gv[1])

train_op = opt.apply_gradients(grads_and_vars)

有更好的方法吗?

最佳答案

apply_gradients方法实际应用的更新规则取决于特定的优化器。看一下tf.train.Optimizer类中apply_gradients的实现here 。它依赖于在方法 _apply_dense_apply_spares 中实现更新规则的派生类。您所指的更新规则是由 GradientDescentOptimizer 实现的。

关于您想要的积极附加更新:如果您调用的 optGradientDescentOptimizer 的实例,那么您确实可以通过以下方式实现您想要做的事情

grads_and_vars = opt.compute_gradients(E, [v])
eta = opt._learning_rate
my_grads_and_vars = [(g-(1/eta)*p, v) for g, v in grads_and_vars]
opt.apply_gradients(my_grads_and_vars)

更优雅的方法可能是编写一个新的优化器(继承自tf.train.Optimizer)来直接实现您所需的更新规则。

关于tensorflow - opt.apply_gradients() 在 TensorFlow 中做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37921781/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com