Funcția nn.CTCLoss (Connectionist Temporal Classification) este utilizată în sarcini secvență-la-secvență unde alinierea temporală dintre intrare și etichetă este necunoscută (de exemplu, transcrierea unui fișier audio în text sau recunoașterea textului dintr-o imagine de linie manuscrisă).
import torch
import torch.nn as nn
# T: pași de timp, N: batch size, C: număr caractere (clase)
T, N, C = 50, 4, 30
ctc_loss = nn.CTCLoss(blank=0)
log_probs = torch.randn(T, N, C).log_softmax(2).detach().requires_grad_()
targets = torch.randint(1, C, (N, 20), dtype=torch.long)
input_lengths = torch.full((N,), T, dtype=torch.long)
target_lengths = torch.randint(10, 20, (N,), dtype=torch.long)
loss = ctc_loss(log_probs, targets, input_lengths, target_lengths)
print("CTC Loss:", loss.item())
Algoritmul utilizează programare dinamică (forward-backward algorithm) pentru a însuma probabilitățile peste toate alinierile posibile ce produc textul țintă după eliminarea repetițiilor și a token-ului blank.
Întrebări & Exemple practice:
Secvențe de Lungime Variabilă cu nn.CTCLossAi o întrebare despre Secvențe de Lungime Variabilă cu nn.CTCLoss 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.