DataLoader-ul standard din PyTorch apelează implicit default_collate, care presupune că toate mostrele returnate de setul de date au dimensiuni identice. Când procesăm propoziții de lungimi diferite sau imagini de rezoluții variabile, este obligatoriu să furnizăm o funcție collate_fn personalizată.
import torch
from torch.utils.data import DataLoader
from torch.nn.utils.rnn import pad_sequence
def padding_collate_fn(batch):
# batch este o listă de tuple (vector_tokeni, eticheta)
secvente = [item[0] for item in batch]
etichete = torch.tensor([item[1] for item in batch])
# Adăugare padding cu tokenul 0 până la lungimea maximă din batch-ul curent
secvente_padded = pad_sequence(secvente, batch_first=True, padding_value=0)
return secvente_padded, etichete
loader = DataLoader(dataset, batch_size=16, collate_fn=padding_collate_fn)
Aplicarea padding-ului dinamic la nivel de batch (în loc de un padding fix global de 512 tokeni) reduce drastic numărul de calcule inutile în operațiile de atenție.
Întrebări & Exemple practice:
Funcții Personalizate collate_fn în PyTorch DataLoaderAi o întrebare despre Funcții Personalizate collate_fn în PyTorch DataLoader 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.