gpt4 book ai didi

python - 如何为 TensorFlow 中的不同层或变量设置不同的学习率?

转载 作者:行者123 更新时间:2023-11-30 09:10:54 24 4
gpt4 key购买 nike

我知道可以使用教程中的方法简单地为所有人完成此操作:

opt = tf.train.GradientDescentOptimizer(learning_rate)

但是,如果可以传递一个将变量名称映射到其相应学习率的字典,那就太好了。这可能吗?

我知道人们可以简单地使用compute_gradients(),然后使用apply_gradients()并手动执行,但这看起来很愚蠢。是否有更智能的方法将特定学习率分配给特定变量?

这是创建特定优化器的唯一方法,如下所示:

# Create an optimizer with the desired parameters.
opt = GradientDescentOptimizer(learning_rate=0.1)
# Add Ops to the graph to minimize a cost by updating a list of variables.
# "cost" is a Tensor, and the list of variables contains tf.Variable
# objects.
opt_op = opt.minimize(cost, var_list=<list of variables>)

并简单地为每个优化器提供特定的学习率?但这意味着我们有一个优化器列表,因此,我们需要将 sess.run 的学习规则应用于每个优化器。对吗?

最佳答案

据我所知这是不可能的。主要是因为这并不是真正有效的梯度下降。有很多优化器可以根据自己的可变特定缩放因子进行学习(例如 Adam 或 AdaGrad)。指定每个变量的学习率(常量)意味着您不再遵循梯度,虽然这对于制定良好的数学方法是有意义的,但简单地将它们设置为预定义的值只是一种启发式方法,我认为这是不在核心 TF 中实现此功能的原因。

正如你所说 - 你总是可以自己做,定义你自己的优化器,迭代计算梯度之间的变量并应用它们,这将是大约 3-4 行代码(一行用于计算梯度,一行用于计算梯度)迭代并添加乘法运算,以及一个将它们应用回来的运算),据我所知 - 这是实现您的目标的最简单的解决方案。

关于python - 如何为 TensorFlow 中的不同层或变量设置不同的学习率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38727612/

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