Función PyTorch torch.nn.LogSoftmax

PyTorch torch.nn 参考手册Manual de referencia de PyTorch torch.nn


torch.nn.LogSoftmaxEs la función de activación Log Softmax en PyTorch.

Es la forma logarítmica de Softmax, numéricamente más estable, y a menudo se usa junto con NLLLoss.

Definición de la función

torch.nn.LogSoftmax(dim=None)

Fórmula

LogSoftmax(x_i) = log(exp(x_i) / sum(exp(x_j)))

Ejemplo de uso

Ejemplo 1: Uso básico

Ejemplo

import torch
import torch.nn as nn

log_softmax = nn.LogSoftmax(dim=1)

logits = torch.tensor([[2.0, 1.0, 0.1]])
log_probs = log_softmax(logits)

print("Logits:", logits.tolist())
print("Log Softmax:", log_probs.tolist())
print("después de exp:", log_probs.exp().tolist())

Ejemplo 2: Combinado con NLLLoss

Ejemplo

import torch
import torch.nn as nn

# Tarea de clasificación
logits = torch.randn(4, 10)
targets = torch.tensor([2, 5, 1, 7])

# LogSoftmax + NLLLoss = CrossEntropyLoss
loss = nn.NLLLoss()(nn.LogSoftmax(dim=1)(logits), targets)
print("NLL Loss:", loss.item())

# Equivalente a
loss2 = nn.CrossEntropyLoss()(logits, targets)
print("CrossEntropyLoss:", loss2.item())

Ejemplo 3: Estabilidad numérica

Ejemplo

import torch
import torch.nn as nn

# logits de gran valor
logits = torch.tensor([[1000, 1001, 1002]])

# Softmax puede desbordarse
try:
    sm = nn.Softmax(dim=1)(logits)
    print("Softmax:", sm)
except:
    print("Desbordamiento de Softmax")

# LogSoftmax es numéricamente estable
lsm = nn.LogSoftmax(dim=1)(logits)
print("LogSoftmax:", lsm)

Casos de uso

  • Tareas de clasificación: combinado con NLLLoss
  • Estabilidad numérica: valores de logit grandes

Consejo: LogSoftmax + NLLLoss equivale a CrossEntropyLoss.


PyTorch torch.nn 参考手册Manual de referencia de PyTorch torch.nn

Otras extensiones