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

Атрибут defaults

Атрибут defaults класса Optimizer представляет собой словарь, содержащий параметры оптимизации, которые применяются ко всем группам параметров по умолчанию. К таким параметрам обычно относятся скорость обучения lr, коэффициент импульса momentum, коэффициент затухания весов weight_decay и другие. Значения этого словаря задаются при создании экземпляра оптимизатора и используются для групп параметров, для которых не были указаны собственные переопределяющие параметры.

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

Синтаксис

optimizer.defaults

Где optimizer - экземпляр класса оптимизатора. Атрибут возвращает словарь с параметрами по умолчанию.

Пример

Давайте создадим оптимизатор SGD и выведем его атрибут defaults:

import torch model = torch.nn.Linear(5, 1) optimizer = torch.optim.SGD(model.parameters(), lr=0.01, momentum=0.9) print(optimizer.defaults)

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

{ 'lr': 0.01, 'momentum': 0.9, 'dampening': 0, 'weight_decay': 0, 'nesterov': False, 'maximize': False, 'foreach': None, 'differentiable': False, }

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

Пример

Изменим значение скорости обучения по умолчанию через атрибут defaults и проверим, как это повлияет на группы параметров:

import torch model = torch.nn.Linear(5, 1) optimizer = torch.optim.Adam(model.parameters(), lr=0.001) print("До изменения:", optimizer.defaults['lr']) optimizer.defaults['lr'] = 0.01 print("После изменения:", optimizer.defaults['lr']) for param_group in optimizer.param_groups: print("lr в группе:", param_group['lr'])

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

"До изменения: 0.001" "После изменения: 0.01" "lr в группе: 0.01"

Как видно из примера, изменение defaults['lr'] автоматически обновило скорость обучения для группы параметров, которая не имела собственного переопределяющего значения.

Пример

Рассмотрим ситуацию, когда для одной из групп параметров задано собственное значение lr. Изменение атрибута defaults не повлияет на эту группу:

import torch model = torch.nn.Linear(5, 1) special_params = list(model.parameters())[:1] optimizer = torch.optim.SGD([ {'params': special_params, 'lr': 0.1}, {'params': list(model.parameters())[1:]}, ], lr=0.01) print("Исходный defaults['lr']:", optimizer.defaults['lr']) print("lr первой группы:", optimizer.param_groups[0]['lr']) print("lr второй группы:", optimizer.param_groups[1]['lr']) optimizer.defaults['lr'] = 0.001 print("\nПосле изменения defaults:") print("defaults['lr']:", optimizer.defaults['lr']) print("lr первой группы:", optimizer.param_groups[0]['lr']) print("lr второй группы:", optimizer.param_groups[1]['lr'])

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

"Исходный defaults['lr']: 0.01" "lr первой группы: 0.1" "lr второй группы: 0.01" "\nПосле изменения defaults:" "defaults['lr']: 0.001" "lr первой группы: 0.1" "lr второй группы: 0.001"

В этом примере первая группа параметров имеет собственное значение lr, поэтому изменение defaults не затронуло её. Вторая группа использует значение по умолчанию, поэтому её lr изменилось.

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

  • класс Optimizer,
    который является базовым для всех оптимизаторов в PyTorch
  • атрибут param_groups,
    который содержит список групп параметров с их индивидуальными настройками
  • метод add_param_group,
    который добавляет новую группу параметров с возможностью переопределения настроек
  • метод state_dict,
    который сохраняет состояние оптимизатора, включая параметры по умолчанию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить