Tensorflow:您在Adam和Adagrad中设置的学习率仅仅是初始学习率吗?

时间:2018-07-02 23:53:10

标签: python tensorflow machine-learning deep-learning

我正在阅读此博客

https://smist08.wordpress.com/2016/10/04/the-road-to-tensorflow-part-10-more-on-optimization/

提到所有张量流的学习率

optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss, global_step=global_step)

optimizer = tf.train.AdadeltaOptimizer(starter_learning_rate).minimize(loss)

optimizer = tf.train.AdagradOptimizer(starter_learning_rate).minimize(loss)     # promising

optimizer = tf.train.AdamOptimizer(starter_learning_rate).minimize(loss)      # promising

optimizer = tf.train.MomentumOptimizer(starter_learning_rate, 0.001).minimize(loss) # diverges

optimizer = tf.train.FtrlOptimizer(starter_learning_rate).minimize(loss)    # promising

optimizer = tf.train.RMSPropOptimizer(starter_learning_rate).minimize(loss)   # promising

它表示您输入的学习率只是入门学习率。这是否意味着如果您在培训过程中更改学习率,那么该更改将不会生效,因为它不再使用入门学习率了?

我尝试查看API文档,但未指定。

1 个答案:

答案 0 :(得分:1)

一个简短的答案:

除了第一行,其余都是自适应梯度下降优化器,这意味着它们将在每一步中根据某些条件自动调整学习率。因此,您给出的学习率仅用于初始化。

class BasePage { get state() { return { locale: 'en' } } } class FooPage extends BasePage { get state() { return Object.assign(super.state, { foo: 'Hello' }) } render() { const { locale, foo } = this.state; console.log({ locale, foo }); // prints { locale: 'en', foo: 'Hello' } } } 为例,您可以在此article中了解其详细信息。