ReduceLROnPlateau
class paddle.fluid.dygraph. ReduceLROnPlateau ( learning_rate, mode=’min’, decay_rate=0.1, patience=10, verbose=False, threshold=1e-4, threshold_mode=’rel’, cooldown=0, min_lr=0, eps=1e-8, dtype=’float32’ ) [源代码]
该API为 自适应的学习率衰减策略。默认情况下,当 loss
停止下降时,降低学习率(如果将 mode
设置为 ‘max’ ,此时判断逻辑相反, loss
停止上升时降低学习率)。其思想是:一旦模型表现不再提升,将学习率降低2-10倍对模型的训练往往有益。
loss
是传入到该类方法 step
中的参数,其必须是shape为[1]的1-D Tensor。 如果 loss
停止下降(mode
为 min 时)超过 patience
个epoch,学习率将会减小为 learning_rate * decay_rate 。
此外,每降低一次学习率后,将会进入一个时长为 cooldown
个epoch的冷静期,在冷静期内,将不会监控 的变化情况,也不会衰减。 在冷静期之后,会继续监控 loss
的上升或下降。
参数:
learning_rate (Variable|float|int) - 初始学习率。其类型可以是Python的float类型,如果输入int类型则会被转为float类型。其也可以是shape为[1]的 1-D Tensor,且相应数据类型必须为 “float32” 或 “float64” 。
mode (str,可选) - ‘min’ 和 ‘max’ 之一。通常情况下,为 ‘min’ ,此时当
loss
停止下降时学习率将减小。默认:’min’ 。 (注意:仅在特殊用法时,可以将其设置为 ‘max’ ,此时判断逻辑相反,loss
停止上升学习率才减小)decay_rate (float,可选) - 学习率衰减的比例。new_lr = origin_lr * decay_rate ,它是值小于1.0的float型数字,默认: 0.1。
verbose (bool,可选) - 如果为
True
, 会在每次更新optimizer中的learning_rate时,打印信息。默认:False
。threshold (float,可选) -
threshold
和threshold_mode
两个参数将会决定 最小变化的阈值。小于该阈值的变化 将会被忽视。默认:1e-4。threshold_mode (str,可选) - ‘rel’ 和 ‘abs’ 之一。在 ‘rel’ 模式下,
loss
最小变化的阈值是 last_loss * threshold , 其中last_loss
是loss
在上个epoch的值。在 ‘abs’ 模式下,loss
最小变化的阈值是 threshold 。 默认:’rel’。min_lr (float,可选) - 最小的学习率。减小后的学习率最低下界限。默认:0。
eps (float,可选) - 如果新旧学习率间的差异小于
eps
,则不会更新。默认值:1e-8。dtype (str,可选) – 学习率值的数据类型,可以为”float32”, “float64”。默认:”float32”。
返回: loss
自适应的学习率
代码示例:
step ( loss )
需要在每个epoch调用该方法,其根据传入的 loss
调整optimizer中的学习率,调整后的学习率将会在下一次调用 optimizer.minimize
时生效。
参数:
返回:
无
代码示例:
参照其类中的说明。