PyTorch torch.nn.MSELoss-Funktion

PyTorch torch.nn 参考手册PyTorch torch.nn Referenzhandbuch


torch.nn.MSELossEs ist die Verlustfunktion des mittleren quadratischen Fehlers in PyTorch.

Sie berechnet den Mittelwert der quadrierten Differenzen zwischen vorhergesagten Werten und Zielwerten und wird häufig in Regressionsaufgaben verwendet.

Funktionsdefinition

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

Parameterbeschreibung:

  • reduction(str): Verlustaggregationsmethode. Optional'mean'、'sum'、'none'. Standardwert ist'mean'。

Mathematisches Prinzip

MSE-Verlustformel:

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

Anwendungsbeispiele

Beispiel 1: Grundlegende Verwendung

Regressionsverlust berechnen:

Beispiel

import torch
import torch.nn as nn

# MSE-Verlust erstellen
criterion = nn.MSELoss()

# Vorhergesagte Werte und wahre Werte
predictions = torch.tensor([3.0, 4.0, 5.0])
targets = torch.tensor([2.8, 4.2, 4.9])

# Verlust berechnen
loss = criterion(predictions, targets)

print("Vorhergesagte Werte:", predictions.tolist())
print("Zielwerte:", targets.tolist())
print("MSE-Verlust:", loss.item())

# Manuelle Überprüfung
manual_mse = ((predictions - targets) ** 2).mean()
print("Manuelle Berechnung:", manual_mse.item())

Beispiel 2: Vollständiges Regressionstraining

Trainingsprozess für die Regressionsaufgabe:

Beispiel

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

# Einfaches Regressionsmodell
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)

# Trainingsdaten
X = torch.randn(100, 10)
y = torch.randn(100, 1)

# Trainingsschritte
model.train()
optimizer.zero_grad()
predictions = model(X)
loss = criterion(predictions, y)
loss.backward()
optimizer.step()

print("Trainingsverlust:", loss.item())

Beispiel 3: reduction-Parameter

Verschiedene Aggregationsmethoden:

Beispiel

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: durchschnittlicher Verlust
loss_mean = nn.MSELoss(reduction='mean')(pred, target)

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

# none: keine Aggregation
loss_none = nn.MSELoss(reduction='none')(pred, target)

print("Mean:", loss_mean.item())
print("Sum:", loss_sum.item())
print("None:", loss_none.tolist())

Beispiel 4: Umgang mit mehrdimensionaler Ausgabe

Mehrdimensionale Regression:

Beispiel

import torch
import torch.nn as nn

# Mehrdimensionale Ausgabe
pred = torch.randn(4, 3)  # batch=4, 3 Ausgaben
target = torch.randn(4, 3)

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

print("Vorhergesagte Form:", pred.shape)
print("Zielform:", target.shape)
print("MSE-Verlust:", loss.item())

FAQ

F1: Was ist besser, MSE oder MAE?

  • MSE: Empfindlich gegenüber Ausreißern, stabile Gradienten
  • MAE (L1): Robust gegenüber Ausreißern, instabile Gradienten

F2: Kann MSE verwendet werden, wenn Ausgaben negative Werte haben?

Ja, MSE schränkt den Ausgabebereich nicht ein.

F3: Welche Verlustfunktion wird für Klassifikationsaufgaben verwendet?

Verwenden Sie CrossEntropyLoss für Klassifikationsaufgaben.


Anwendungsfälle

nn.MSELossZu den wichtigsten Anwendungsszenarien gehören:

  • Regressionsaufgaben: Vorhersage von Hauspreisen, numerische Schätzung
  • Vorhersage kontinuierlicher Werte: Zielverfolgung
  • Generative Modelle: Bestimmte Verluste für VAE, GAN

PyTorch torch.nn 参考手册PyTorch torch.nn Referenzhandbuch

Andere Erweiterungen