SWALR
-
class torch.optim.swa_utils.SWALR(optimizer, swa_lr, anneal_epochs=10, anneal_strategy='cos', last_epoch=-1)[исходный код] -
Плавно изменяет скорость обучения в каждой группе параметров до фиксированного значения.
Этот планировщик скорости обучения предназначен для использования с методом стохастического усреднения весов (SWA) (см.
torch.optim.swa_utils.AveragedModel).- Параметры:
-
- optimizer (torch.optim.Optimizer) – оптимизатор-обёртка
- swa_lrs (float or list) – значение скорости обучения для всех групп параметров вместе или отдельно для каждой группы.
- annealing_epochs (int) – количество эпох в фазе плавного изменения (по умолчанию: 10)
- annealing_strategy (str) – «cos» или «linear»; задаёт стратегию плавного изменения: «cos» для косинусного изменения, «linear» для линейного изменения (по умолчанию: «cos»)
- last_epoch (int) – индекс последней эпохи (по умолчанию: -1)
Планировщик
SWALRможно использовать вместе с другими планировщиками, чтобы на позднем этапе обучения перейти к постоянной скорости обучения, как показано в примере ниже.Пример
>>> loader, optimizer, model = ... >>> lr_lambda = lambda epoch: 0.9 >>> scheduler = torch.optim.lr_scheduler.MultiplicativeLR(optimizer, >>> lr_lambda=lr_lambda) >>> swa_scheduler = torch.optim.swa_utils.SWALR(optimizer, >>> anneal_strategy="linear", anneal_epochs=20, swa_lr=0.05) >>> swa_start = 160 >>> for i in range(300): >>> for input, target in loader: >>> optimizer.zero_grad() >>> loss_fn(model(input), target).backward() >>> optimizer.step() >>> if i > swa_start: >>> swa_scheduler.step() >>> else: >>> scheduler.step()
-
get_last_lr()[исходный код] -
Получить последние значения скорости обучения, вычисленные этим планировщиком.
- Возвращает:
-
listзначений скорости обучения, содержащий записи для каждой изparam_groupsоптимизатора; типы элементов соответствуют типам ихgroup["lr"]. - Тип возвращаемого значения:
Примечание
Возвращаемые
Tensorявляются копиями и никогда не ссылаются наgroup["lr"]оптимизатора.
-
get_lr()[исходный код] -
Вычислить следующую скорость обучения для каждой из
param_groupsоптимизатора.Использует
anneal_funcдля интерполяции междуgroup["lr"]каждой группы иgroup["swa_lr"]на протяженииanneal_epochsэпох. После достиженияanneal_epochsскорость обучения остаётся фиксированной на уровнеgroup["swa_lr"].- Возвращает:
-
listзначений скорости обучения для каждой изparam_groupsоптимизатора; типы элементов соответствуют типам их текущихgroup["lr"]. - Тип возвращаемого значения:
Примечание
Чтобы посмотреть последнее значение скорости обучения, используйте вместо этого
get_last_lr().Примечание
Возвращаемые
Tensorявляются копиями и никогда не ссылаются наgroup["lr"]оптимизатора.
-
load_state_dict(state_dict)[исходный код] -
Загрузить состояние планировщика.
- Параметры:
-
state_dict (dict) – состояние планировщика. Должен быть объектом, возвращённым вызовом
state_dict().
-
state_dict()[исходный код] -
Вернуть состояние планировщика в виде
dict.Оно содержит запись для каждой переменной в self.__dict__, кроме optimizer и anneal_func.
-
step(epoch=None)[исходный код] -
Выполнить шаг планировщика.
- Параметры:
-
epoch (int, optional) –
Устарело начиная с версии 1.4: Если указано, задаёт
last_epochравнымepochи использует_get_closed_form_lr(), если он доступен. Поддерживается не во всех случаях. Вместо этого вызывайтеstep()без аргументов.
Примечание
Вызывайте этот метод после вызова
step()оптимизатора.
© 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.swa_utils.SWALR.html