PyTorch torch.nn.Parameter Funktion
PyTorch torch.nn Referenzhandbuch
torch.nn.ParameterEs ist ein lernbarer Parameter-Tensor in PyTorch.
Es ist ein Wrapper, der einen gewöhnlichen Tensor in einen lernbaren Parameter umwandelt und automatisch zur Parameterliste des Moduls hinzugefügt wird.
Funktionsdefinition
torch.nn.Parameter(data=None, requires_grad=True)
Anwendungsbeispiele
Beispiel 1: Grundlegende Verwendung
Beispiel
import torch
import torch.nn as nn
class MyModule(nn.Module):
def __init__(self):
super(MyModule, self).__init__()
# Erstelle einen lernbaren Parameter
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("Parameter:", list(model.named_parameters()))
print("Gewichtsform:", model.weight.shape)
import torch.nn as nn
class MyModule(nn.Module):
def __init__(self):
super(MyModule, self).__init__()
# Erstelle einen lernbaren Parameter
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("Parameter:", list(model.named_parameters()))
print("Gewichtsform:", model.weight.shape)
Beispiel 2: Alternative zu register_parameter
Beispiel
import torch
import torch.nn as nn
# Methode 1: nn.Parameter verwenden (empfohlen)
class Net1(nn.Module):
def __init__(self):
super().__init__()
self.param = nn.Parameter(torch.ones(5))
# Methode 2: register_parameter verwenden (äquivalent)
class Net2(nn.Module):
def __init__(self):
super().__init__()
self.register_parameter('param', nn.Parameter(torch.ones(5)))
print("Parameter von Methode 1:", list(Net1().named_parameters()))
print("Parameter von Methode 2:", list(Net2().named_parameters()))
import torch.nn as nn
# Methode 1: nn.Parameter verwenden (empfohlen)
class Net1(nn.Module):
def __init__(self):
super().__init__()
self.param = nn.Parameter(torch.ones(5))
# Methode 2: register_parameter verwenden (äquivalent)
class Net2(nn.Module):
def __init__(self):
super().__init__()
self.register_parameter('param', nn.Parameter(torch.ones(5)))
print("Parameter von Methode 1:", list(Net1().named_parameters()))
print("Parameter von Methode 2:", list(Net2().named_parameters()))
Beispiel 3: Nicht lernbare Parameter
Beispiel
import torch
import torch.nn as nn
# requires_grad=False erzeugt einen nicht lernbaren Parameter
param_no_grad = nn.Parameter(torch.ones(5), requires_grad=False)
print("Trainierbar:", param_no_grad.requires_grad)
print("Weiterhin ein Parameter:", type(param_no_grad))
import torch.nn as nn
# requires_grad=False erzeugt einen nicht lernbaren Parameter
param_no_grad = nn.Parameter(torch.ones(5), requires_grad=False)
print("Trainierbar:", param_no_grad.requires_grad)
print("Weiterhin ein Parameter:", type(param_no_grad))
Anwendungsfälle
- Benutzerdefinierte Layer: Lernbare Gewichte implementieren
- Spezielle Module: Nicht-Standard-Parameter
- Direkter Zugriff: Bequeme Handhabung
Tipp: nn.Parameter ist eine Unterklasse von Tensor und wird automatisch zu parameters() hinzugefügt.
Andere Erweiterungen