Fonction PyTorch torch.nn.MSELoss

PyTorch torch.nn 参考手册Manuel de référence torch.nn de PyTorch


torch.nn.MSELossC'est la fonction de perte d'erreur quadratique moyenne dans PyTorch.

Elle calcule la moyenne des différences au carré entre les valeurs prédites et les valeurs cibles, couramment utilisée dans les tâches de régression.

Définition de fonction

torch.nn.MSELoss(reduction='mean')

Description des paramètres :

  • reduction(str) : Méthode d'agrégation de la perte. Facultatif'mean'、'sum'、'none'. La valeur par défaut est'mean'。

Principe mathématique

Formule de perte MSE :

MSE = (1/n) * Σ(y_pred - y_true)²

Exemples d'utilisation

Exemple 1 : Utilisation de base

Calculer la perte de régression :

Exemple

import torch
import torch.nn as nn

# Créer la perte MSE
criterion = nn.MSELoss()

# Valeurs prédites et valeurs réelles
predictions = torch.tensor([3.0, 4.0, 5.0])
targets = torch.tensor([2.8, 4.2, 4.9])

# Calculer la perte
loss = criterion(predictions, targets)

print("Valeurs prédites :", predictions.tolist())
print("Valeurs cibles :", targets.tolist())
print("Perte MSE :", loss.item())

# Vérification manuelle
manual_mse = ((predictions - targets) ** 2).mean()
print("Calcul manuel :", manual_mse.item())

Exemple 2 : entraînement complet d'un modèle de régression

Processus d'entraînement de la tâche de régression :

Exemple

import torch
import torch.nn as nn
import torch.optim as optim

# Modèle de régression simple
class RegressionNet(nn.Module):
    def __init__(self):
        super(RegressionNet, self).__init__()
        self.fc = nn.Linear(10, 1)

    def forward(self, x):
        return self.fc(x)

model = RegressionNet()
criterion = nn.MSELoss()
optimizer = optim.Adam(model.parameters(), lr=0.01)

# Données d'entraînement
X = torch.randn(100, 10)
y = torch.randn(100, 1)

# Étapes d'entraînement
model.train()
optimizer.zero_grad()
predictions = model(X)
loss = criterion(predictions, y)
loss.backward()
optimizer.step()

print("Perte d'entraînement :", loss.item())

Exemple 3 : paramètre reduction

Différentes méthodes d'agrégation :

Exemple

import torch
import torch.nn as nn

pred = torch.tensor([3.0, 4.0, 5.0, 6.0])
target = torch.tensor([3.5, 3.8, 5.2, 5.5])

# mean : perte moyenne
loss_mean = nn.MSELoss(reduction='mean')(pred, target)

# sum : perte totale
loss_sum = nn.MSELoss(reduction='sum')(pred, target)

# none : aucune agrégation
loss_none = nn.MSELoss(reduction='none')(pred, target)

print("Moyenne :", loss_mean.item())
print("Somme :", loss_sum.item())
print("Aucune :", loss_none.tolist())

Exemple 4 : gestion de la sortie multidimensionnelle

Régression multidimensionnelle :

Exemple

import torch
import torch.nn as nn

# Sortie multidimensionnelle
pred = torch.randn(4, 3)  # batch=4, 3 sorties
target = torch.randn(4, 3)

criterion = nn.MSELoss()
loss = criterion(pred, target)

print("Forme prédite :", pred.shape)
print("Forme cible :", target.shape)
print("Perte MSE :", loss.item())

FAQ

Q1 : Qu'est-ce qui est le mieux, MSE ou MAE ?

  • MSE : Sensible aux valeurs aberrantes, gradients stables
  • MAE (L1) : Robuste aux valeurs aberrantes, gradients instables

Q2 : Peut-on utiliser MSE si les sorties ont des valeurs négatives ?

Oui, MSE ne restreint pas la plage de sortie.

Q3 : Quelle perte est utilisée pour les tâches de classification ?

Utilisez CrossEntropyLoss pour les tâches de classification.


Cas d'utilisation

nn.MSELossLes principaux scénarios d'application incluent :

  • Tâches de régression: Prédiction du prix des maisons, estimation numérique
  • Prédiction de valeurs continues: Suivi de cible
  • Modèles génératifs: Certaines pertes pour VAE, GAN

PyTorch torch.nn 参考手册Manuel de référence torch.nn de PyTorch

Autres extensions