Funcția Softmax convertește un vector de numere reale (logits) într-o distribuție de probabilitate în care fiecare valoare este strict cuprinsă între 0 și 1, iar suma tuturor componentelor este exact 1.0.
Pentru calculul funcțiilor de pierdere precum CrossEntropyLoss sau NLLLoss, calculul direct al log(Softmax(x)) este instabil numeric dacă valorile sunt foarte mari sau mici (underflow/overflow). Din acest motiv, se utilizează nn.LogSoftmax (sau trucul LogSumExp):
import torch
import torch.nn as nn
logits = torch.tensor([[2.0, 1.0, 0.1]])
# Softmax direct pentru generare/inferență
softmax = nn.Softmax(dim=-1)
print("Probabilități:", softmax(logits))
# LogSoftmax pentru stabilitate matematică în antrenare
log_softmax = nn.LogSoftmax(dim=-1)
print("Log-probabilități:", log_softmax(logits))
În PyTorch, nn.CrossEntropyLoss combină automat LogSoftmax și NLLLoss într-o singură instrucțiune optimizată C++, primind direct logits ne-normalizați.
Întrebări & Exemple practice:
Distribuții de Probabilitate: nn.Softmax vs nn.LogSoftmaxAi o întrebare despre Distribuții de Probabilitate: nn.Softmax vs nn.LogSoftmax sau ai descoperit un truc, prompt sau fragment de cod util? Distribuie-l cu ceilalți membri ai comunității!
Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau resurse pentru această pagină. Dacă ai testat un prompt sau ai un snippet util, adaugă-l mai jos pentru comunitate.