Neural-Networks

Keras,SGD 學習率衰減是如何工作的?

  • May 7, 2016

如果您查看文檔http://keras.io/optimizers/,SGD中有一個參數用於衰減。我知道這會隨著時間的推移降低學習率。但是,我無法弄清楚它是如何工作的。它是乘以學習率的值,例如lr = lr * (1 - decay) 指數嗎?另外,我如何查看我的模型使用的學習率?model.optimizer.lr.get_value()當我在運行幾個時期後進行打印時,即使我設置了衰減,它也會返回原始學習率。

我是否必須設置 nesterov=True 才能使用動量,或者我可以使用兩種不同類型的動量。例如,這樣做有沒有意義sgd = SGD(lr = 0.1, decay = 1e-6, momentum = 0.9, nesterov = False)

您所指的文檔包括對 Python 源代碼的引用(只需單擊[Source]相應位置的鏈接),可用於回答您的問題。這是最相關的行,顯示瞭如何decay修改學習率:

lr = self.lr * (1. / (1. + self.decay * self.iterations))

nesterov選項不必設置為 True 才能使用動量;它導致以不同的方式使用動量,從源代碼中再次可以看出:

v = self.momentum * m - lr * g  # velocity

if self.nesterov:
   new_p = p + self.momentum * v - lr * g
else:
   new_p = p + v

引用自:https://stats.stackexchange.com/questions/211334

comments powered by Disqus