PyTorch torch.logcumsumexp-Funktion
PyTorch torch-Referenzhandbuch
torch.logcumsumexpist eine Funktion in PyTorch, die verwendet wird, um den Logarithmus der kumulativen Summe von Exponentialwerten zu berechnen. Sie potenziert zuerst die Elemente, führt dann eine kumulative Summe durch und bildet schließlich den Logarithmus, wodurch numerischer Überlauf vermieden werden kann.
Funktionsdefinition
torch.logcumsumexp(input, dim)
Parameterbeschreibung:
input: Eingabetensordim: die Dimension für die kumulative Summierung
Anwendungsbeispiel
Beispiel
import torch
# Tensor erstellen
x = torch.tensor([1.0, 2.0, 3.0])
# Berechne den Logarithmus der kumulativen Summe der Exponentialwerte
y = torch.logcumsumexp(x, dim=0)
print(y)
# Tensor erstellen
x = torch.tensor([1.0, 2.0, 3.0])
# Berechne den Logarithmus der kumulativen Summe der Exponentialwerte
y = torch.logcumsumexp(x, dim=0)
print(y)
Das Ausgabeergebnis ist:
tensor([1.0000, 2.3133, 3.1000])
Beispiel
import torch
# Überprüfen: log(exp(1) + exp(2)) = log(exp(1) + exp(2))
# log(e^1 + e^2) = log(e^1 + e^2) ≈ 2.3133
x = torch.tensor([1.0, 2.0])
y = torch.logcumsumexp(x, dim=0)
# Vergleich mit direkter Berechnung
import math
direct = math.log(math.exp(1) + math.exp(2))
print("logcumsumexp:", y[1].item())
print("direkt:", direct)
# Überprüfen: log(exp(1) + exp(2)) = log(exp(1) + exp(2))
# log(e^1 + e^2) = log(e^1 + e^2) ≈ 2.3133
x = torch.tensor([1.0, 2.0])
y = torch.logcumsumexp(x, dim=0)
# Vergleich mit direkter Berechnung
import math
direct = math.log(math.exp(1) + math.exp(2))
print("logcumsumexp:", y[1].item())
print("direkt:", direct)
Das Ausgabeergebnis ist:
logcumsumexp: 2.313261505126953 direct: 2.313261505126953
Andere Erweiterungen