În problemele de metric learning, recunoaștere facială și antrenare a modelelor de căutare vectorială (dense retrieval), obiectivul este ca vectorul de ancoră (Anchor) să fie mai aproape de exemplul pozitiv (Positive) decât de exemplul negativ (Negative) cu cel puțin o margine specificată (margin):
Loss = max(0, d(a, p) - d(a, n) + margin)
import torch
import torch.nn as nn
triplet_loss = nn.TripletMarginLoss(margin=1.0, p=2)
anchor = torch.randn(10, 128, requires_grad=True)
positive = torch.randn(10, 128, requires_grad=True)
negative = torch.randn(10, 128, requires_grad=True)
loss = triplet_loss(anchor, positive, negative)
loss.backward()
print("Gradiente ancoră calculate:", anchor.grad is not None)
O variantă frecvent utilizată este nn.CosineEmbeddingLoss, care utilizează unghiul cosinus în loc de distanța euclidiană L2.
Întrebări & Exemple practice:
Metric Learning: nn.TripletMarginLoss și CosineEmbeddingLossAi o întrebare despre Metric Learning: nn.TripletMarginLoss și CosineEmbeddingLoss 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.