РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
517 of 769 menu

Метод get_last_lr

Метод get_last_lr класса LRScheduler возвращает список скоростей обучения, которые были установлены на последнем шаге обновления. Этот метод полезен для отслеживания текущих значений скорости обучения во время тренировки, особенно при использовании динамических стратегий изменения скорости обучения. Метод не принимает никаких параметров и возвращает список чисел с плавающей запятой для каждой группы параметров.

Синтаксис

last_lr = scheduler.get_last_lr()

Пример

Создадим модель и оптимизатор, а затем с помощью планировщика StepLR получим последние значения скорости обучения:

import torch import torch.nn as nn from torch.optim import SGD from torch.optim.lr_scheduler import StepLR model = nn.Linear(10, 5) optimizer = SGD(model.parameters(), lr=0.1) scheduler = StepLR(optimizer, step_size=10, gamma=0.5) last_lr = scheduler.get_last_lr() print(last_lr)

Результат выполнения кода:

[0.1]

Изначально скорость обучения равна базовой, так как метод step ещё не вызывался.

Пример

Вызовем метод step несколько раз, чтобы изменить скорость обучения, и в конце получим последнее значение с помощью метода get_last_lr:

import torch import torch.nn as nn from torch.optim import SGD from torch.optim.lr_scheduler import StepLR model = nn.Linear(10, 5) optimizer = SGD(model.parameters(), lr=0.1) scheduler = StepLR(optimizer, step_size=3, gamma=0.5) for epoch in range(5): scheduler.step() print(f'Epoch {epoch+1}: last_lr = {scheduler.get_last_lr()}')

Результат выполнения кода:

Epoch 1: last_lr = [0.1] Epoch 2: last_lr = [0.1] Epoch 3: last_lr = [0.1] Epoch 4: last_lr = [0.05] Epoch 5: last_lr = [0.05]

Скорость обучения меняется только на эпохах, кратных шагу в 3 эпохи.

Пример

Рассмотрим использование метода get_last_lr с планировщиком CosineAnnealingLR, который изменяет скорость обучения по косинусоидальному закону:

import torch import torch.nn as nn from torch.optim import SGD from torch.optim.lr_scheduler import CosineAnnealingLR torch.manual_seed(0) model = nn.Linear(10, 5) optimizer = SGD(model.parameters(), lr=0.1) scheduler = CosineAnnealingLR(optimizer, T_max=10) for epoch in range(5): scheduler.step() print(f'Epoch {epoch+1}: last_lr = {scheduler.get_last_lr()}')

Результат выполнения кода:

Epoch 1: last_lr = [0.09755283646308996] Epoch 2: last_lr = [0.09045084971874737] Epoch 3: last_lr = [0.07938929611518898] Epoch 4: last_lr = [0.06545084971874738] Epoch 5: last_lr = [0.05]

Метод get_last_lr возвращает текущие значения скорости обучения после каждого вызова step.

Пример

При использовании нескольких групп параметров метод get_last_lr возвращает список значений для каждой группы:

import torch import torch.nn as nn from torch.optim import SGD from torch.optim.lr_scheduler import StepLR model = nn.Sequential( nn.Linear(10, 5), nn.Linear(5, 3) ) optimizer = SGD([ {'params': model[0].parameters(), 'lr': 0.1}, {'params': model[1].parameters(), 'lr': 0.01} ]) scheduler = StepLR(optimizer, step_size=5, gamma=0.1) scheduler.step() last_lr = scheduler.get_last_lr() print(last_lr)

Результат выполнения кода:

[0.1, 0.01]

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

Смотрите также

  • класс LRScheduler,
    который является базовым для всех планировщиков скорости обучения
  • метод step,
    который обновляет скорость обучения и вызывает изменение
  • метод get_lr,
    который вычисляет новую скорость обучения для следующего шага
  • метод state_dict,
    который сохраняет состояние планировщика для дальнейшего восстановления
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить