在Coursera类“实践中的TensorFlow-序列,时间序列和预测”上,第二周的第9个视频使用回调来动态提高(而不是降低)学习率。我了解为什么我们需要动态调整费率;但是此回调在每个时期都会提高学习率。当神经网络学习更多信息时,我们是否不想做相反的事情并逐渐降低学习率?我确定视频是正确的(它是由Andrew Ng和Google创建的,他们显然对TensorFlow知道很多),但是为什么我们要提高(而不是降低)学习率? keras实际上是使用这个数字的倒数作为学习率,还是类似的东西?
#Doesn't the next line *increase* the learning rate with each callback?
#But shouldn't we be gradually decreasing it?
lr_schedule = tf.keras.callbacks.LearningRateScheduler(
lambda epoch: 1e-8 * 10**(epoch / 20))
optimizer = tf.keras.optimizers.SGD(lr=1e-8, momentum=0.9)
model.compile(loss="mse", optimizer=optimizer)
history = model.fit(dataset, epochs=100, callbacks=[lr_schedule], verbose=0)
这是他们随此示例提供的示例笔记本中的完整代码示例: https://colab.research.google.com/github/lmoroney/dlaicourse/blob/master/TensorFlow%20In%20Practice/Course%204%20-%20S%2BP/S%2BP%20Week%202%20Lesson%203.ipynb
在每个时期提高学习率是否正确?这是否会导致优化器在每个时期都“过度调整”答案,并且从不收敛到解决方案?
答案 0 :(得分:0)
你是对的。当目标是训练网络时,实际执行此操作没有任何意义。他们可能这样做是为了证明您的学习率可能太高?紧随其后的图形可能会显示这样的课程。