Функция torch.nn.Parameter в PyTorch
Справочное руководство PyTorch torch.nn
torch.nn.ParameterЭто обучаемый тензор параметров в PyTorch.
Это обёртка, которая преобразует обычный тензор в обучаемый параметр и автоматически добавляется в список параметров модуля.
Определение функции
torch.nn.Parameter(data=None, requires_grad=True)
Примеры использования
Пример 1: Базовое использование
Пример
import torch
import torch.nn as nn
class MyModule(nn.Module):
def __init__(self):
super(MyModule, self).__init__()
# Создать обучаемый параметр
self.weight = nn.Parameter(torch.randn(10, 5))
self.bias = nn.Parameter(torch.zeros(5))
def forward(self, x):
return x @ self.weight.t() + self.bias
model = MyModule()
print("Параметры:", list(model.named_parameters()))
print("Форма весов:", model.weight.shape)
import torch.nn as nn
class MyModule(nn.Module):
def __init__(self):
super(MyModule, self).__init__()
# Создать обучаемый параметр
self.weight = nn.Parameter(torch.randn(10, 5))
self.bias = nn.Parameter(torch.zeros(5))
def forward(self, x):
return x @ self.weight.t() + self.bias
model = MyModule()
print("Параметры:", list(model.named_parameters()))
print("Форма весов:", model.weight.shape)
Пример 2: Альтернатива register_parameter
Пример
import torch
import torch.nn as nn
# Способ 1: Используйте nn.Parameter (рекомендуется)
class Net1(nn.Module):
def __init__(self):
super().__init__()
self.param = nn.Parameter(torch.ones(5))
# Способ 2: Используйте register_parameter (эквивалентно)
class Net2(nn.Module):
def __init__(self):
super().__init__()
self.register_parameter('param', nn.Parameter(torch.ones(5)))
print("Параметры метода 1:", list(Net1().named_parameters()))
print("Параметры метода 2:", list(Net2().named_parameters()))
import torch.nn as nn
# Способ 1: Используйте nn.Parameter (рекомендуется)
class Net1(nn.Module):
def __init__(self):
super().__init__()
self.param = nn.Parameter(torch.ones(5))
# Способ 2: Используйте register_parameter (эквивалентно)
class Net2(nn.Module):
def __init__(self):
super().__init__()
self.register_parameter('param', nn.Parameter(torch.ones(5)))
print("Параметры метода 1:", list(Net1().named_parameters()))
print("Параметры метода 2:", list(Net2().named_parameters()))
Пример 3: Необучаемые параметры
Пример
import torch
import torch.nn as nn
# requires_grad=False создаёт необучаемый параметр
param_no_grad = nn.Parameter(torch.ones(5), requires_grad=False)
print("Обучаемый:", param_no_grad.requires_grad)
print("Всё ещё параметр:", type(param_no_grad))
import torch.nn as nn
# requires_grad=False создаёт необучаемый параметр
param_no_grad = nn.Parameter(torch.ones(5), requires_grad=False)
print("Обучаемый:", param_no_grad.requires_grad)
print("Всё ещё параметр:", type(param_no_grad))
Сценарии использования
- Пользовательские слои: Реализация обучаемых весов
- Специальные модули: Нестандартные параметры
- Прямой доступ: Удобная операция
Совет: nn.Parameter — это подкласс tensor и автоматически добавляется в parameters().
Другие расширения