Función PyTorch torch.nn.Parameter
Manual de referencia de PyTorch torch.nn
torch.nn.ParameterEs un tensor de parámetros aprendibles en PyTorch.
Es un envoltorio que convierte tensores ordinarios en parámetros aprendibles y se añade automáticamente a la lista de parámetros del módulo.
Definición de la función
torch.nn.Parameter(data=None, requires_grad=True)
Ejemplo de uso
Ejemplo 1: Uso básico
Ejemplo
import torch
import torch.nn as nn
class MyModule(nn.Module):
def __init__(self):
super(MyModule, self).__init__()
# Crear un parámetro aprendible
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("Parámetros:", list(model.named_parameters()))
print("Forma del peso:", model.weight.shape)
import torch.nn as nn
class MyModule(nn.Module):
def __init__(self):
super(MyModule, self).__init__()
# Crear un parámetro aprendible
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("Parámetros:", list(model.named_parameters()))
print("Forma del peso:", model.weight.shape)
Ejemplo 2: Sustituir register_parameter
Ejemplo
import torch
import torch.nn as nn
# Método 1: Usar nn.Parameter (recomendado)
class Net1(nn.Module):
def __init__(self):
super().__init__()
self.param = nn.Parameter(torch.ones(5))
# Método 2: Usar register_parameter (equivalente)
class Net2(nn.Module):
def __init__(self):
super().__init__()
self.register_parameter('param', nn.Parameter(torch.ones(5)))
print("Parámetros del método 1:", list(Net1().named_parameters()))
print("Parámetros del método 2:", list(Net2().named_parameters()))
import torch.nn as nn
# Método 1: Usar nn.Parameter (recomendado)
class Net1(nn.Module):
def __init__(self):
super().__init__()
self.param = nn.Parameter(torch.ones(5))
# Método 2: Usar register_parameter (equivalente)
class Net2(nn.Module):
def __init__(self):
super().__init__()
self.register_parameter('param', nn.Parameter(torch.ones(5)))
print("Parámetros del método 1:", list(Net1().named_parameters()))
print("Parámetros del método 2:", list(Net2().named_parameters()))
Ejemplo 3: Parámetros no aprendibles
Ejemplo
import torch
import torch.nn as nn
# requires_grad=False crea un parámetro no aprendible
param_no_grad = nn.Parameter(torch.ones(5), requires_grad=False)
print("Entrenable:", param_no_grad.requires_grad)
print("Sigue siendo Parameter:", type(param_no_grad))
import torch.nn as nn
# requires_grad=False crea un parámetro no aprendible
param_no_grad = nn.Parameter(torch.ones(5), requires_grad=False)
print("Entrenable:", param_no_grad.requires_grad)
print("Sigue siendo Parameter:", type(param_no_grad))
Casos de uso
- Capas personalizadas: Implementar pesos aprendibles
- Módulos especiales: Parámetros no estándar
- Acceso directo: Operación conveniente
Consejo: nn.Parameter es una subclase de tensor y se añade automáticamente a parameters().
Otras extensiones