Spec-Zone.ru › PyTorch 2.14

CosineAnnealingLR

class torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max, eta_min=0.0, last_epoch=-1) [исходный код]

Задает скорость обучения для каждой группы параметров согласно расписанию косинусного отжига.

Скорость обучения обновляется рекурсивно по формуле:

ηt+1=ηmin⁡+(ηt−ηmin⁡)⋅1+cos⁡((Tcur+1)πTmax)1+cos⁡(TcurπTmax)\eta_{t+1} = \eta_{\min} + (\eta_t - \eta_{\min}) \cdot \frac{1 + \cos\left(\frac{(T_{cur}+1) \pi}{T_{max}}\right)} {1 + \cos\left(\frac{T_{cur} \pi}{T_{max}}\right)}

Это реализует рекурсивное приближение расписания в замкнутой форме, предложенного в работе SGDR: стохастический градиентный спуск с теплыми перезапусками:

ηt=ηmin⁡+12(ηmax⁡−ηmin⁡)(1+cos⁡(TcurπTmax))\eta_t = \eta_{\min} + \frac{1}{2}(\eta_{\max} - \eta_{\min}) \left( 1 + \cos\left(\frac{T_{cur} \pi}{T_{max}}\right) \right)

где:

  • ηt\eta_t — скорость обучения на шаге tt
  • TcurT_{cur} — число эпох с момента последнего перезапуска
  • TmaxT_{max} — максимальное число эпох в цикле

Примечание

Хотя SGDR предусматривает периодические перезапуски, эта реализация выполняет косинусный отжиг без перезапусков, поэтому Tcur=tT_{cur} = t и монотонно увеличивается при каждом вызове step().

Параметры:
  • optimizer (Optimizer) – Оптимизатор, к которому применяется планировщик.
  • T_max (int) – Максимальное число итераций.
  • eta_min (float) – Минимальная скорость обучения. По умолчанию: 0.
  • last_epoch (int) – Индекс последней эпохи. По умолчанию: -1.

Пример

>>> num_epochs = 100
>>> scheduler = CosineAnnealingLR(optimizer, T_max=num_epochs)
>>> for epoch in range(num_epochs):
>>>     train(...)
>>>     validate(...)
>>>     scheduler.step()
../_images/CosineAnnealingLR.png
get_last_lr() [исходный код]

Возвращает последние скорости обучения, вычисленные этим планировщиком.

Возвращает:

list скоростей обучения, по одной для каждой param_groups оптимизатора и того же типа, что и соответствующие group["lr"].

Тип возвращаемого значения:

list[float | Tensor]

Примечание

Возвращаемые Tensor являются копиями и никогда не ссылаются на group["lr"] оптимизатора.

get_lr() [исходный код]

Вычисляет следующую скорость обучения для каждой param_groups оптимизатора.

Масштабирует group["lr"] в param_groups оптимизатора так, чтобы их скорости обучения приближались к значению

eta_min+12(base_lr−eta_min)(1+cos⁡(π⋅last_epochT_max))\texttt{eta\_min} + \frac{1}{2} (\texttt{base\_lr} - \texttt{eta\_min}) \left(1 + \cos\left(\pi \cdot \frac{\texttt{last\_epoch}}{\texttt{T\_max}}\right) \right)
Возвращает:

list скоростей обучения для каждой param_groups оптимизатора; их типы совпадают с типами соответствующих текущих group["lr"].

Тип возвращаемого значения:

list[float | Tensor]

Примечание

Чтобы получить последние значения скорости обучения, используйте вместо этого get_last_lr().

Примечание

Возвращаемые Tensor являются копиями и никогда не ссылаются на group["lr"] оптимизатора.

load_state_dict(state_dict) [исходный код]

Загружает состояние планировщика.

Параметры:

state_dict (dict) – Состояние планировщика. Должен быть объектом, возвращенным вызовом state_dict().

state_dict() [исходный код]

Возвращает состояние планировщика в виде dict.

Оно содержит запись для каждой переменной в self.__dict__, кроме оптимизатора.

Тип возвращаемого значения:

dict[str, Any]

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.lr_scheduler.CosineAnnealingLR.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API