Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ar galite pateikti partijos dydžio neatitikimų pavyzdžius „Pytorch“


Ar galite pateikti partijos dydžio neatitikimų pavyzdžius „Pytorch“


Pytorcho partijos dydžio neatitikimai gali atsirasti dėl įvairių priežasčių, dažnai susijusių su tuo, kaip duomenys apdorojami ar pertvarkomi treniruotės metu. Štai keletas pavyzdžių:

1. Netinkamas dėl neteisingo taikinio formato:
- Pytorche, naudojant „Crossentropyloss“, taikinys turėtų būti sveikasis indeksas, o ne vienas karštas užkoduoti vektoriai. Jei taikinys yra užkoduotas vieną karštakodžiui, tai gali sukelti paketinio dydžio neatitikimo klaidą, nes modelis tikisi, kad dydžio „batch_size]“ taikinys yra „batch_size]`, tačiau gauna tensorių dydžio `[batch_size, n_classes]`. Pvz., Jei modelis prognozuoja vieną iš 24 klasių, taikinys turėtų būti formos formos `(32,)` 32, o ne `(32, 24)` [1].

2. Kalbant apie keitimą:
- Kartais modelio operacijų pertvarkymas gali netyčia sumažinti partijos dydį. Pvz., Jei tensoris yra pertvarkytas taip, kad jo pirmasis matmenys (partijos dydis) pakeis, tai gali sukelti neatitikimą, kai skaičiuojamos nuostolių funkcijos, kurios tikisi, kad įvesties ir taikinio partijos dydžiai atitiks [5].

3. Dataloader elgesys:
- Pytorcho „Dataloader“ kartais gali grąžinti įvairių dydžių partijas, ypač jei duomenų rinkinio dydis nėra partijos dydžio kartotinis. Tai atsitinka, kai „Drop_Last = False“, todėl paskutinė partija yra mažesnė už nurodytą partijos dydį. Paprastai nesutapę su partijos problema, ji gali sukelti painiavą, jei ji nebus tinkamai tvarkoma [3].

4. Pasirinktinis duomenų rinkinys arba modelio įgyvendinimas:
- Pasirinktiniai duomenų rinkiniai ar modeliai gali netyčia sukelti partijos dydžio neatitikimus, jei duomenys ar modelio išėjimai nėra tinkamai suderinti. Pvz., Jei pasirinktinis duomenų rinkinys grąžina duomenis netikėtu formatu arba jei modelio pirmyn išankstinis leidimas pakeičia duomenis taip, kad pakeistų partijos dydį, tai gali sukelti klaidų mokymo metu [7].

5. Praradimo funkcijos reikalavimai:
- Skirtingos nuostolių funkcijos turi skirtingus įvesties ir tikslinių formų reikalavimus. Pavyzdžiui, „L1LOSS“ reikalauja, kad abu įėjimai turėtų tą pačią formą, o tai gali sukelti partijos dydžio neatitikimus, jei formos netinkamai nesulygina [2].

Citatos:
[1] https://stackoverflow.com/questions/74785188/pytorch-capling-about-dput-and-babel-batch-size-ismatch
[2] https://github.com/lightning-ai/pytorch-lighting/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-Size
[7] https://discuss.pytorch.org/t/batch-size-match/187427
[8] https://github.com/lightning-ai/pytorch-lighting/issues/3668