PyTorch torch.nn.Softmax-Funktion
PyTorch torch.nn Referenzhandbuch
torch.nn.Softmaxist die Softmax-Aktivierungsfunktion in PyTorch.
Sie wandelt die Eingabe in eine Wahrscheinlichkeitsverteilung um, wobei sich alle Ausgaben zu 1 summieren.
Funktionsdefinition
torch.nn.Softmax(dim=None)
Parameter:
dim: Die Dimension, entlang der Softmax ausgeführt wird
Formel
Softmax(x_i) = exp(x_i) / sum(exp(x_j))
Anwendungsbeispiele
Beispiel 1: Grundlegende Verwendung
Beispiel
import torch
import torch.nn as nn
softmax = nn.Softmax(dim=1)
logits = torch.tensor([[2.0, 1.0, 0.1], [1.0, 2.0, 0.5]])
probs = softmax(logits)
print("Logits:", logits.tolist())
print("Wahrscheinlichkeiten:", probs.tolist())
print("Zeilensummen:", probs.sum(dim=1).tolist())
import torch.nn as nn
softmax = nn.Softmax(dim=1)
logits = torch.tensor([[2.0, 1.0, 0.1], [1.0, 2.0, 0.5]])
probs = softmax(logits)
print("Logits:", logits.tolist())
print("Wahrscheinlichkeiten:", probs.tolist())
print("Zeilensummen:", probs.sum(dim=1).tolist())
Beispiel 2: Parameter dim
Beispiel
import torch
import torch.nn as nn
# 3D-Eingabe
x = torch.randn(2, 3, 4)
# softmax entlang verschiedener Dimensionen
print("dim=1:", nn.Softmax(dim=1)(x).sum(dim=1)[:1])
print("dim=2:", nn.Softmax(dim=2)(x).sum(dim=2)[:1])
print("dim=-1:", nn.Softmax(dim=-1)(x).sum(dim=-1)[:1])
import torch.nn as nn
# 3D-Eingabe
x = torch.randn(2, 3, 4)
# softmax entlang verschiedener Dimensionen
print("dim=1:", nn.Softmax(dim=1)(x).sum(dim=1)[:1])
print("dim=2:", nn.Softmax(dim=2)(x).sum(dim=2)[:1])
print("dim=-1:", nn.Softmax(dim=-1)(x).sum(dim=-1)[:1])
Beispiel 3: Klassifikationsausgabe
Beispiel
import torch
import torch.nn as nn
model = nn.Linear(784, 10)
# Ausgabe-Logits
logits = model(torch.randn(4, 784))
# In Wahrscheinlichkeiten umwandeln
probs = nn.Softmax(dim=1)(logits)
print("Vorhergesagte Klasse:", probs.argmax(dim=1).tolist())
print("Höchste Wahrscheinlichkeit:", probs.max(dim=1).values.tolist())
import torch.nn as nn
model = nn.Linear(784, 10)
# Ausgabe-Logits
logits = model(torch.randn(4, 784))
# In Wahrscheinlichkeiten umwandeln
probs = nn.Softmax(dim=1)(logits)
print("Vorhergesagte Klasse:", probs.argmax(dim=1).tolist())
print("Höchste Wahrscheinlichkeit:", probs.max(dim=1).values.tolist())
Anwendungsfälle
- Ausgabe der Mehrklassenklassifikation: Wahrscheinlichkeitsverteilung
- Aufmerksamkeitsmechanismus
- Probabilistische Modelle
Hinweis: Die Werte nach Softmax sind alle positiv und summieren sich zu 1.
Weitere Erweiterungen