训练深度学习模型的常见模式是随着训练的进行逐渐减少学习。这通常称为“学习率衰减”。
学习衰减时间表可以是静态的(根据当前周期或当前批次索引预先确定),也可以是动态的(响应模型的当前行为,尤其是验证损失)。
将时间表传递给优化器
通过将时间表对象作为优化器中的 learning_rate
参数传递,您可以轻松使用静态学习率衰减时间表:
initial_learning_rate = 0.1 lr_schedule = keras.optimizers.schedules.ExponentialDecay( initial_learning_rate, decay_steps=100000, decay_rate=0.96, staircase=True ) optimizer = keras.optimizers.RMSprop(learning_rate=lr_schedule)
使用回调实现动态学习率时间表
由于优化器无法访问验证指标,因此无法使用这些时间表对象来实现动态学习率时间表(例如,当验证损失不再改善时降低学习率)。
但是,回调确实可以访问所有指标,包括验证指标!因此,您可以通过使用可修改优化器上的当前学习率的回调来实现此模式。实际上,它甚至以
ReduceLROnPlateau
回调的形式内置。