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

Метод named_parameters

Метод named_parameters возвращает генератор кортежей (имя, параметр) для всех параметров модели и её подслоёв. Параметры возвращаются в порядке их регистрации в модели. Метод не принимает аргументов и используется для итерации по параметрам с их именами, что удобно при отладке, сохранении или применении различных операций к конкретным параметрам.

Синтаксис

model.named_parameters()

Пример

Давайте создадим простую модель и выведем имена и значения всех её параметров:

import torch import torch.nn as nn class SimpleModel(nn.Module): def __init__(self): super().__init__() self.fc1 = nn.Linear(5, 3) self.fc2 = nn.Linear(3, 2) model = SimpleModel() for name, param in model.named_parameters(): print(name, param.shape)

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

fc1.weight torch.Size([3, 5]) fc1.bias torch.Size([3]) fc2.weight torch.Size([2, 3]) fc2.bias torch.Size([2])

Пример

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

import torch import torch.nn as nn class CustomModel(nn.Module): def __init__(self): super().__init__() self.conv = nn.Conv2d(3, 16, 3) self.bn = nn.BatchNorm2d(16) model = CustomModel() for name, param in model.named_parameters(): if 'weight' in name: torch.nn.init.xavier_uniform_(param) elif 'bias' in name: param.data.fill_(0.0) print(f"{name}: {param.data[0, 0] if param.dim() > 1 else param.data[0]}")

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

conv.weight: 0.31347754645347595 conv.bias: 0.0 bn.weight: 0.0 bn.bias: 0.0

Пример

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

import torch import torch.nn as nn class Net(nn.Module): def __init__(self): super().__init__() self.embedding = nn.Embedding(100, 10) self.fc = nn.Linear(10, 5) model = Net() for name, param in model.named_parameters(): if 'embedding' in name: param.requires_grad = False print(f"Frozen: {name}") else: print(f"Trainable: {name}")

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

Frozen: embedding.weight Trainable: fc.weight Trainable: fc.bias

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

  • метод parameters,
    который возвращает только параметры без имён
  • метод state_dict,
    который возвращает словарь всех параметров и буферов
  • метод named_buffers,
    который возвращает именованные буферы модели
  • метод apply,
    который применяет функцию ко всем подслоям модели
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить