ReduceLROnPlateau
-
class torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='min', factor=0.1, patience=10, threshold=0.0001, threshold_mode='rel', cooldown=0, min_lr=0, eps=1e-08)[исходный код] -
Уменьшает скорость обучения, когда метрика перестаёт улучшаться.
Модели часто выигрывают от уменьшения скорости обучения в 2–10 раз, когда обучение замедляется. Этот планировщик отслеживает значение метрики и уменьшает скорость обучения, если улучшение не наблюдается в течение заданного числа эпох «patience».
- Параметры:
-
- optimizer (Optimizer) – Оптимизатор, для которого применяется планировщик.
-
mode (str) – Один из
min,max. В режимеminскорость обучения будет уменьшена, если отслеживаемое значение перестанет снижаться; в режимеmaxона будет уменьшена, если отслеживаемое значение перестанет расти. По умолчанию: ‘min’. - factor (float) – Коэффициент, на который будет уменьшена скорость обучения. new_lr = lr * factor. По умолчанию: 0.1.
-
patience (int) – Число эпох без улучшения, после которого скорость обучения будет уменьшена. Например, рассмотрим случай, когда терпение равно нулю (
patience = 0). В первую эпоху устанавливается базовое значение, которое всегда считается хорошим, поскольку предыдущего базового значения нет. Во вторую эпоху, если результат хуже базового значения, эпоха считается недопустимой. Поскольку число недопустимых эпох (1) превышает уровень терпения (0), скорость обучения уменьшается в конце этой эпохи. Начиная с третьей эпохи скорость обучения продолжает уменьшаться в конце каждой эпохи, если результат хуже базового значения. Если результат улучшается или остаётся прежним, скорость обучения не корректируется. По умолчанию: 10. - threshold (float) – Порог для определения нового оптимального значения, позволяющий учитывать только существенные изменения. По умолчанию: 1e-4.
-
threshold_mode (str) –
Один из
rel,abs. В режимеrelдинамический порог вычисляется следующим образом:- best * (1 + threshold), если mode == ‘max’
- best * (1 - threshold), если mode == ‘min’
В режиме
absдинамический порог вычисляется следующим образом:- best + threshold, если mode == ‘max’
- best - threshold, если mode == ‘min’
По умолчанию: ‘rel’.
- cooldown (int) – Число эпох ожидания перед возобновлением обычной работы после уменьшения скорости обучения. По умолчанию: 0.
- min_lr (float или list) – Скалярное значение или список скалярных значений. Нижняя граница скорости обучения для всех групп параметров или для каждой группы соответственно. По умолчанию: 0.
- eps (float) – Минимальное уменьшение скорости обучения. Если разница между новой и старой скоростью обучения меньше eps, обновление игнорируется. По умолчанию: 1e-8.
Пример
>>> optimizer = torch.optim.SGD(model.parameters(), lr=0.1, momentum=0.9) >>> scheduler = ReduceLROnPlateau(optimizer, "min") >>> for epoch in range(10): >>> train(...) >>> val_loss = validate(...) >>> # Note that step should be called after validate() >>> scheduler.step(val_loss)
-
get_last_lr()[исходный код] -
Возвращает последние скорости обучения, вычисленные этим планировщиком.
- Возвращает:
-
listскоростей обучения с записями для каждой изparam_groupsоптимизатора; типы записей совпадают с типами ихgroup["lr"]. - Тип возвращаемого значения:
Примечание
Возвращаемые
Tensorявляются копиями и никогда не являются псевдонимамиgroup["lr"]оптимизатора.
-
get_lr()[исходный код] -
Вычисляет следующую скорость обучения для каждой из
param_groupsоптимизатора.- Возвращает:
-
listскоростей обучения для каждой изparam_groupsоптимизатора; типы записей совпадают с типами их текущихgroup["lr"]. - Тип возвращаемого значения:
Примечание
Чтобы узнать последнюю скорость обучения, используйте вместо этого
get_last_lr().Примечание
Возвращаемые
Tensorявляются копиями и никогда не являются псевдонимамиgroup["lr"]оптимизатора.
-
load_state_dict(state_dict)[исходный код] -
Загружает состояние планировщика.
-
state_dict()[исходный код] -
Возвращает состояние планировщика в виде
dict.Оно содержит запись для каждой переменной из
self.__dict__, кроме оптимизатора.
-
step(metrics, epoch=None)[исходный код] -
Выполняет шаг.
© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.optim.lr_scheduler.ReduceLROnPlateau.html