CosineAnnealingWarmRestarts
-
class torch.optim.lr_scheduler.CosineAnnealingWarmRestarts(optimizer, T_0, T_mult=1, eta_min=0.0, last_epoch=-1)[исходный код] -
Задаёт скорость обучения каждой группы параметров с помощью расписания косинусного отжига.
задаётся начальной скоростью обучения, — число эпох после последнего перезапуска, а — число эпох между двумя тёплыми перезапусками в SGDR:
Когда , задаётся значение . После перезапуска, когда , задаётся значение .
Метод предложен в работе SGDR: стохастический градиентный спуск с тёплыми перезапусками.
- Параметры:
-
- optimizer (Optimizer) – Обёрнутый оптимизатор.
- T_0 (int) – Число итераций до первого перезапуска.
- T_mult (int, optional) – Коэффициент, на который увеличивается после перезапуска. По умолчанию: 1.
- eta_min (float, optional) – Минимальная скорость обучения. По умолчанию: 0.
- last_epoch (int, optional) – Индекс последней эпохи. По умолчанию: -1.
Пример
>>> optimizer = torch.optim.SGD(model.parameters(), lr=0.05) >>> scheduler = torch.optim.lr_scheduler.CosineAnnealingWarmRestarts( ... optimizer, T_0=20 ... ) >>> for epoch in range(100): >>> train(...) >>> validate(...) >>> scheduler.step()
-
get_last_lr()[исходный код] -
Получить последние скорости обучения, вычисленные этим планировщиком.
- Возвращает:
-
listскоростей обучения с элементами для каждойparam_groupsоптимизатора, имеющими те же типы, что и ихgroup["lr"]s. - Тип возвращаемого значения:
Примечание
Возвращаемые
Tensors являются копиями и никогда не ссылаются наgroup["lr"]оптимизатора.
-
get_lr()[исходный код] -
Вычислить следующую скорость обучения для каждой
param_groupsоптимизатора.Вычисляет скорости обучения для
param_groupsоптимизатора по следующей формуле:Здесь
T_cur— число эпох после последнего перезапуска, аT_i— число эпох между двумя перезапусками. ЗначенияT_curиT_iобновляются вstep(), аT_iпосле каждого перезапуска увеличивается вT_multраз.- Возвращает:
-
listскоростей обучения для каждойparam_groupsоптимизатора с теми же типами, что и у их текущихgroup["lr"]s. - Тип возвращаемого значения:
Примечание
Чтобы просмотреть последнюю скорость обучения, используйте вместо этого
get_last_lr().Примечание
Возвращаемые
Tensors являются копиями и никогда не ссылаются наgroup["lr"]оптимизатора.
-
load_state_dict(state_dict)[исходный код] -
Загрузить состояние планировщика.
- Параметры:
-
state_dict (dict) – Состояние планировщика. Должен быть объектом, возвращённым вызовом
state_dict().
-
state_dict()[исходный код] -
Вернуть состояние планировщика в виде
dict.Он содержит запись для каждой переменной в
self.__dict__, кроме оптимизатора.
-
step(epoch=None)[исходный код] -
Метод step можно вызывать после обновления каждого пакета данных.
Пример
>>> scheduler = CosineAnnealingWarmRestarts(optimizer, T_0, T_mult) >>> iters = len(dataloader) >>> for epoch in range(20): >>> for i, sample in enumerate(dataloader): >>> inputs, labels = sample['inputs'], sample['labels'] >>> optimizer.zero_grad() >>> outputs = net(inputs) >>> loss = criterion(outputs, labels) >>> loss.backward() >>> optimizer.step() >>> scheduler.step(epoch + i / iters)
Эту функцию можно вызывать попеременно.
Пример
>>> scheduler = CosineAnnealingWarmRestarts(optimizer, T_0, T_mult) >>> for epoch in range(20): >>> scheduler.step() >>> scheduler.step(26) >>> scheduler.step() # scheduler.step(27), instead of scheduler(20)
© 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.CosineAnnealingWarmRestarts.html