Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ali lahko v Pytorchu navedete primere neusklajenosti velikosti serije


Ali lahko v Pytorchu navedete primere neusklajenosti velikosti serije


Neskladje velikosti šarže v Pytorchu se lahko pojavijo zaradi različnih razlogov, ki so pogosto povezani s tem, kako se podatki med treningom obdelujejo ali preoblikujejo. Tu je nekaj primerov:

1. Neskladje zaradi napačne ciljne oblike:
- V Pytorchu mora biti pri uporabi `Crossentropyloss" cilj celoštevilčne indekse, ne pa ene vroče kodirane vektorje. Če je tarča kodirana v enem doboju, lahko privede do napake v neusklajenosti velikosti šarže, ker model pričakuje cilj velikosti `[Batch_size]`, vendar prejme tenzor velikosti `[Batch_size, n_classes]`. Na primer, če model napoveduje enega od 24 razredov, bi moral biti cilj tenzor oblike `(32,)` za velikost serije 32, ne `(32, 24)` [1].

2. Preoblikovanje vprašanj:
- Včasih lahko preoblikovanje operacij znotraj modela nenamerno zmanjša velikost šarže. Na primer, če je tenzor preoblikovan tako, da je njegova prva dimenzija (velikost šarže) spremenjena, lahko to privede do neusklajenosti, ko izračunajo funkcije izgube, ki pričakujejo, da se serija vhoda in cilja ujemajo [5].

3. Obnašanje podatkovne nalaganje:
- Pytorchov "DataLoader" lahko včasih vrne serije različnih velikosti, še posebej, če velikost nabora ni večkratna velikost serije. To se zgodi, ko je `Drop_last = false`, zaradi česar je zadnja serija manjša od določene velikosti serije. Čeprav običajno ni vprašanje neusklajenosti znotraj serije, lahko povzroči zmedo, če se ne ravna pravilno [3].

4. Izvedba podatkovne nabora ali model po meri:
- Nabori ali modeli po meri lahko nenamerno povzročijo neusklajenost velikosti paketov, če podatki ali izhodi modela niso pravilno poravnani. Na primer, če nabor podatkov po meri vrne podatke v nepričakovani obliki ali če model naprej prehodi, preoblikuje podatke na način, ki spremeni velikost šarže, lahko to privede do napak med usposabljanjem [7].

5. Zahteve za funkcijo izgube:
- Različne funkcije izgube imajo različne zahteve za vhodne in ciljne oblike. Na primer, "L1Loss" zahtevata, da imata oba vhoda enako obliko, kar lahko privede do neusklajenosti velikosti serije, če se oblike ne poravnajo pravilno [2].

Navedbe:
[1] https://stackoverflow.com/questions/74785188/pytorch-Complaining-about-input-and-label-batch-size-mismatch
[2] https://github.com/lingning-ai/pytorch-lighning/discussions/14812
[3] https://discuss.pytorch.org/t/problem-with-batch-size/114363
[4] https://discuss.pytorch.org/t/test-accuracy-with-different-batch-sizes/22930
[5] https://discuss.pytorch.org/t/batch-size-mismatch/98354
[6] https://stackoverflow.com/questions/62123795/mismatch-in-batch-dize
[7] https://discuss.pytorch.org/t/batch-size-match/187427
[8] https://github.com/lingning-ai/pytorch-lighning/isissue/3668