Keras,SGD 学习率衰减是如何工作的?

机器算法验证 神经网络 Python
2022-01-26 14:39:52

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

1个回答

您所指的文档包括对 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