Fonction torch.nn.Parameter de PyTorch
Manuel de référence torch.nn de PyTorch
torch.nn.ParameterC'est un tenseur de paramètres apprenables dans PyTorch.
C'est un wrapper qui convertit un tenseur ordinaire en un paramètre apprenable et est automatiquement ajouté à la liste des paramètres du module.
Définition de fonction
torch.nn.Parameter(data=None, requires_grad=True)
Exemples d'utilisation
Exemple 1 : Utilisation de base
Exemple
import torch
import torch.nn as nn
class MyModule(nn.Module):
def __init__(self):
super(MyModule, self).__init__()
# Créer un paramètre apprenable
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("Paramètres :", list(model.named_parameters()))
print("Forme du poids :", model.weight.shape)
import torch.nn as nn
class MyModule(nn.Module):
def __init__(self):
super(MyModule, self).__init__()
# Créer un paramètre apprenable
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("Paramètres :", list(model.named_parameters()))
print("Forme du poids :", model.weight.shape)
Exemple 2 : Alternative à register_parameter
Exemple
import torch
import torch.nn as nn
# Méthode 1 : Utiliser nn.Parameter (recommandé)
class Net1(nn.Module):
def __init__(self):
super().__init__()
self.param = nn.Parameter(torch.ones(5))
# Méthode 2 : Utiliser register_parameter (équivalent)
class Net2(nn.Module):
def __init__(self):
super().__init__()
self.register_parameter('param', nn.Parameter(torch.ones(5)))
print("Paramètres de la méthode 1 :", list(Net1().named_parameters()))
print("Paramètres de la méthode 2 :", list(Net2().named_parameters()))
import torch.nn as nn
# Méthode 1 : Utiliser nn.Parameter (recommandé)
class Net1(nn.Module):
def __init__(self):
super().__init__()
self.param = nn.Parameter(torch.ones(5))
# Méthode 2 : Utiliser register_parameter (équivalent)
class Net2(nn.Module):
def __init__(self):
super().__init__()
self.register_parameter('param', nn.Parameter(torch.ones(5)))
print("Paramètres de la méthode 1 :", list(Net1().named_parameters()))
print("Paramètres de la méthode 2 :", list(Net2().named_parameters()))
Exemple 3 : paramètres non apprenables
Exemple
import torch
import torch.nn as nn
# requires_grad=False crée un paramètre non apprenable
param_no_grad = nn.Parameter(torch.ones(5), requires_grad=False)
print("Entraînable :", param_no_grad.requires_grad)
print("Toujours un Parameter :", type(param_no_grad))
import torch.nn as nn
# requires_grad=False crée un paramètre non apprenable
param_no_grad = nn.Parameter(torch.ones(5), requires_grad=False)
print("Entraînable :", param_no_grad.requires_grad)
print("Toujours un Parameter :", type(param_no_grad))
Cas d'utilisation
- Couches personnalisées: implémenter des poids apprenables
- Modules spéciaux: paramètres non standard
- Accès direct: opération pratique
Astuce : nn.Parameter est une sous-classe de tensor et est automatiquement ajouté à parameters().
Autres extensions