Spec-Zone.ru › PyTorch 2.14

CyclicLR

class torch.optim.lr_scheduler.CyclicLR(optimizer, base_lr, max_lr, step_size_up=2000, step_size_down=None, mode='triangular', gamma=1.0, scale_fn=None, scale_mode='cycle', cycle_momentum=True, base_momentum=0.8, max_momentum=0.9, last_epoch=-1) [исходный код]

Устанавливает скорость обучения каждой группы параметров в соответствии с политикой циклической скорости обучения (CLR).

Политика циклически изменяет скорость обучения между двумя границами с постоянной частотой, как описано в статье Cyclical Learning Rates for Training Neural Networks. Расстояние между двумя границами можно масштабировать для каждой итерации или каждого цикла.

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

В этом классе реализованы три встроенные политики, описанные в статье:

  • «triangular»: базовый треугольный цикл без масштабирования амплитуды.
  • «triangular2»: базовый треугольный цикл, в котором начальная амплитуда уменьшается вдвое с каждым циклом.
  • «exp_range»: цикл, в котором начальная амплитуда масштабируется на gammacycle iterations\text{gamma}^{\text{cycle iterations}} на каждой итерации цикла.

Эта реализация адаптирована из репозитория GitHub: bckenstler/CLR

Параметры:
  • optimizer (Optimizer) – Обёрнутый оптимизатор.
  • base_lr (float или list) – Начальная скорость обучения, которая является нижней границей цикла для каждой группы параметров.
  • max_lr (float или list) – Верхние границы скорости обучения в цикле для каждой группы параметров. Функционально этот параметр задаёт амплитуду цикла (max_lr - base_lr). Скорость обучения в любом цикле равна сумме base_lr и некоторого масштабированного значения амплитуды; поэтому, в зависимости от функции масштабирования, значение max_lr может фактически не достигаться.
  • step_size_up (int) – Количество итераций обучения в возрастающей половине цикла. По умолчанию: 2000
  • step_size_down (int) – Количество итераций обучения в убывающей половине цикла. Если step_size_down равен None, ему присваивается значение step_size_up. По умолчанию: None
  • mode (str) – Одно из значений {triangular, triangular2, exp_range}. Значения соответствуют политикам, описанным выше. Если scale_fn не равен None, этот аргумент игнорируется. По умолчанию: ‘triangular’
  • gamma (float) – Константа в функции масштабирования ‘exp_range’: gamma**(cycle iterations). По умолчанию: 1.0
  • scale_fn (function) – Пользовательская политика масштабирования, задаваемая лямбда-функцией с одним аргументом, для которой 0 <= scale_fn(x) <= 1 при всех x >= 0. Если задана, параметр ‘mode’ игнорируется. По умолчанию: None
  • scale_mode (str) – {‘cycle’, ‘iterations’}. Определяет, вычисляется ли scale_fn по номеру цикла или по числу итераций цикла (итераций обучения с начала цикла). По умолчанию: ‘cycle’
  • cycle_momentum (bool) – Если True, моментум циклически изменяется в направлении, противоположном скорости обучения, между ‘base_momentum’ и ‘max_momentum’. По умолчанию: True
  • base_momentum (float или list) – Нижние границы моментума в цикле для каждой группы параметров. Обратите внимание, что моментум циклически изменяется в направлении, противоположном скорости обучения: на пике цикла моментум равен ‘base_momentum’, а скорость обучения — ‘max_lr’. По умолчанию: 0.8
  • max_momentum (float или list) – Верхние границы моментума в цикле для каждой группы параметров. Функционально этот параметр задаёт амплитуду цикла (max_momentum - base_momentum). Моментум в любом цикле равен max_momentum за вычетом некоторого масштабированного значения амплитуды; поэтому, в зависимости от функции масштабирования, значение base_momentum может фактически не достигаться. Обратите внимание, что моментум циклически изменяется в направлении, противоположном скорости обучения: в начале цикла моментум равен ‘max_momentum’, а скорость обучения — ‘base_lr’. По умолчанию: 0.9
  • last_epoch (int) – Индекс последнего пакета. Этот параметр используется при возобновлении обучения. Поскольку step() следует вызывать после каждого пакета, а не после каждой эпохи, это число обозначает общее количество обработанных пакетов, а не общее количество эпох. Если last_epoch=-1, расписание запускается с начала. По умолчанию: -1

Пример

>>> optimizer = torch.optim.SGD(model.parameters(), lr=0.1, momentum=0.9)
>>> scheduler = torch.optim.lr_scheduler.CyclicLR(
...     optimizer,
...     base_lr=0.01,
...     max_lr=0.1,
...     step_size_up=10,
... )
>>> data_loader = torch.utils.data.DataLoader(...)
>>> for epoch in range(10):
>>>     for batch in data_loader:
>>>         train_batch(...)
>>>         scheduler.step()
../_images/CyclicLR.png
get_last_lr() [исходный код]

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

Возвращает:

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

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

list[float | Tensor]

Примечание

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

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

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

Перемещает каждую group["lr"] в param_groups оптимизатора по циклу между base_lr и max_lr группы, используя scale_fn().

Возвращает:

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

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

list[float | Tensor]

Примечание

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

Примечание

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

Примечание

Этот метод рассматривает last_epoch как индекс предыдущего пакета.

Примечание

Если cycle_momentum равно True, этот метод также обновляет моментум оптимизатора.

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

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

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

Возвращает политику масштабирования.

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

float

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

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

Оно содержит запись для каждой переменной в self.__dict__, кроме оптимизатора. Лямбда-функции скорости обучения сохраняются только в том случае, если они являются вызываемыми объектами, но не если они представлены функциями или лямбда-выражениями.

При сохранении или загрузке планировщика не забудьте также сохранить или загрузить состояние оптимизатора.

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

dict[str, Any]

step(epoch=None) [исходный код]

Выполняет шаг планировщика.

Параметры:

epoch (int, необязательный) –

Устарело с версии 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.CyclicLR.html

Spec-Zone.ru

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