Keras,SGD学习率衰减如何起作用?


23

如果您查看文档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)

Answers:


24

您要参考的文档包括对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

1
并且self.iterations是指个体SGD步骤的数目,而不是历元的数目,rigt?
guillefix
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.