Keras 有一个回调,可以在指定指标达到稳定状态时降低学习率,称为 ReduceLROnPlateau
.
如何在原生 Tensorflow 中创建这样的功能?在 Tensorflow 模型中,是否可以调用 Keras 回调?还是需要用原生Tensorflow来写?如果是这样,您将如何在训练过程中设置学习率?
最佳答案
恐怕 Tensorflow 不支持这种开箱即用的功能(并且 keras 回调也不能直接适用)。这是list of supported learning rate scheduling techniques :它们都是不同的算法,但是自包含,即独立于训练性能。
但好消息是所有优化器都接受学习率张量。因此,您可以为学习率创建一个变量或占位符,并根据验证性能更改其值(您还需要自己计算)。这是 wonderful answer 中的一个示例:
learning_rate = tf.placeholder(tf.float32, shape=[])
# ...
train_step = tf.train.GradientDescentOptimizer(
learning_rate=learning_rate).minimize(mse)
sess = tf.Session()
# Feed different values for learning rate to each training step.
sess.run(train_step, feed_dict={learning_rate: 0.1})
sess.run(train_step, feed_dict={learning_rate: 0.1})
sess.run(train_step, feed_dict={learning_rate: 0.01})
sess.run(train_step, feed_dict={learning_rate: 0.01})
关于python - 在 Tensorflow 中你会如何做ReduceLROnPlateau?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50266975/