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

Атрибут param_groups

Атрибут param_groups класса Optimizer предоставляет доступ к списку групп параметров, которые оптимизируются. Каждая группа является словарем, содержащим параметры модели и настройки оптимизации (скорость обучения, коэффициент импульса и другие гиперпараметры). Атрибут позволяет просматривать, изменять и добавлять группы параметров напрямую, что дает гибкий контроль над процессом обучения.

Структура param_groups

Атрибут представляет собой список словарей. Каждый словарь содержит ключ params со списком параметров тензоров и ключи с гиперпараметрами (например, lr, momentum, weight_decay). Рассмотрим структуру на примере оптимизатора SGD:

import torch model = torch.nn.Linear(5, 3) optimizer = torch.optim.SGD(model.parameters(), lr=0.01) print(optimizer.param_groups)

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

[ { 'params': [Parameter containing: ...], 'lr': 0.01, 'momentum': 0, 'dampening': 0, 'weight_decay': 0, 'nesterov': False } ]

Пример

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

import torch model = torch.nn.Sequential( torch.nn.Linear(10, 5), torch.nn.Linear(5, 1) ) param_groups = [ {'params': model[0].parameters(), 'lr': 0.01}, {'params': model[1].parameters(), 'lr': 0.001} ] optimizer = torch.optim.SGD(param_groups, momentum=0.9) for i, group in enumerate(optimizer.param_groups): print(f"Group {i}: lr = {group['lr']}, num_params = {len(group['params'])}")

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

Group 0: lr = 0.01, num_params = 2 Group 1: lr = 0.001, num_params = 2

Пример

Изменим скорость обучения для всех групп во время обучения:

import torch model = torch.nn.Linear(5, 1) optimizer = torch.optim.SGD(model.parameters(), lr=0.1) print(f"Initial lr: {optimizer.param_groups[0]['lr']}") for group in optimizer.param_groups: group['lr'] = 0.01 print(f"Updated lr: {optimizer.param_groups[0]['lr']}")

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

Initial lr: 0.1 Updated lr: 0.01

Пример

Добавим новую группу параметров в существующий оптимизатор с помощью метода add_param_group:

import torch model = torch.nn.Linear(10, 5) optimizer = torch.optim.SGD(model.parameters(), lr=0.01) print(f"Number of groups before: {len(optimizer.param_groups)}") new_params = torch.nn.Linear(5, 2).parameters() optimizer.add_param_group({'params': new_params, 'lr': 0.001}) print(f"Number of groups after: {len(optimizer.param_groups)}") print(f"New group lr: {optimizer.param_groups[1]['lr']}")

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

Number of groups before: 1 Number of groups after: 2 New group lr: 0.001

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

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