Pentru a implementa o funcție de pierdere personalizată (cum ar fi Focal Loss, Dice Loss sau pierderi fizice), este suficient să extindem clasa nn.Module și să implementăm metoda forward() folosind exclusiv operații PyTorch derivabile.
import torch
import torch.nn as nn
import torch.nn.functional as F
class BinaryFocalLoss(nn.Module):
def __init__(self, gamma=2.0, alpha=0.25):
super().__init__()
self.gamma = gamma
self.alpha = alpha
def forward(self, logits, targets):
bce_loss = F.binary_cross_entropy_with_logits(logits, targets, reduction='none')
probs = torch.sigmoid(logits)
p_t = probs * targets + (1 - probs) * (1 - targets)
loss = self.alpha * (1 - p_t) ** self.gamma * bce_loss
return loss.mean()
criterion = BinaryFocalLoss()
loss = criterion(torch.tensor([1.5, -0.8]), torch.tensor([1.0, 0.0]))
print("Focal Loss calculat:", loss.item())
Atât timp cât toate calculele folosesc operatori PyTorch, autograd va deduce automat derivatele parțiale fără a necesita scrierea explicită a pasului backward.
Întrebări & Exemple practice:
Funcții de Pierdere Personalizate și Diferențiabile în PyTorchAi o întrebare despre Funcții de Pierdere Personalizate și Diferențiabile în PyTorch 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.