Вы можете установить скорость обучения (и некоторые другие мета-параметры) для каждой группы параметров. Вам нужно только сгруппировать ваши параметры в соответствии с вашими потребностями.
Например, установка разной скорости обучения для конвексных слоев:
import torch
import itertools
from torch import nn
conv_params = itertools.chain.from_iterable([m.parameters() for m in model.children()
if isinstance(m, nn.Conv2d)])
other_params = itertools.chain.from_iterable([m.parameters() for m in model.children()
if not isinstance(m, nn.Conv2d)])
optimizer = torch.optim.SGD([{'params': other_params},
{'params': conv_params, 'lr': 0}], # set init lr to 0
lr=lr_for_model)
Позже вы можете получить доступ к оптимизатору param_groups
и изменить скорость обучения.
См. опции для каждого параметра для получения дополнительной информации.