Pytorchin erän koon epäsuhteet voivat tapahtua monista syistä, jotka liittyvät usein siihen, miten tietoja käsitellään tai muokataan uudelleen koulutuksen aikana. Tässä on joitain esimerkkejä:
1. Virheellisestä kohdemuodosta johtuva epäsuhta:
- Pytorchissa, kun käytetään `crossentropyloss`, kohteen tulisi olla kokonaislukuindeksejä, ei yhden kuumia koodattuja vektoreita. Jos tavoite on yhden kuuma koodattu, se voi johtaa erän koon epäsuhtavirheeseen, koska malli odottaa koon tavoitetta `[batch_size]`, mutta vastaanottaa koon `[batch_size, n_classes]`. Esimerkiksi, jos malli ennustaa yhden 24 luokasta, tavoitteen tulisi olla muodon tenori `(32,)` eräkokolle 32, ei `(32, 24)` [1].
2. Kysymykset:
- Joskus mallin muokkaustoiminnot voivat vahingossa pienentää erän kokoa. Esimerkiksi, jos tensori muokataan tavalla, jolla sen ensimmäinen ulottuvuus (eräkoko) muuttuu, tämä voi johtaa epäsuhtaan laskemalla menetystoiminnot, jotka odottavat syöttö- ja kohteen eräkokoja vastaavan [5].
3. Dataloader -käyttäytyminen:
- Pytorchin `dataloader` voi joskus palauttaa erikokoiset erät, varsinkin jos tietojoukon koko ei ole erän koon monikerros. Tämä tapahtuu, kun `drop_last = false` aiheuttaen viimeisen erän pienemmän kuin määritetty eräkoko. Vaikka se ei ole tyypillisesti epäsuhta -kysymys erässä, se voi aiheuttaa sekaannusta, jos sitä ei käsitellä kunnolla [3].
4. Mukautettu tietojoukko tai mallin toteutus:
- Mukautetut tietojoukot tai mallit saattavat vahingossa aiheuttaa erän koon epäsuhta, jos data- tai mallilähdöt eivät ole oikein kohdistettu. Esimerkiksi, jos räätälöity tietojoukko palauttaa tiedot odottamattomassa muodossa tai jos mallin eteenpäin suuntautuva passi muuttaa tietoja erän kokoa muuttamalla tavalla, tämä voi johtaa virheisiin koulutuksen aikana [7].
5. Tappiofunktiovaatimukset:
- Eri häviöfunktioilla on erilaiset vaatimukset syöttö- ja kohdemuotoille. Esimerkiksi `l1loss` vaatii molemmat tulot saman muodon, mikä voi johtaa erän koon epäsuhtaisiin, jos muodot eivät kohdistu kunnolla [2].
.
[2] https://github.com/lightning-ai/pytorch-lighting/discussions/14812
[3] https://discuss.pytorch.org/t/problem-with-batch-size/114363
.
[5] https://discuss.pytorch.org/t/batch-size-marmatch/98354
.
[7] https://discuss.pytorch.org/t/batch-size-match/187427
[8] https://github.com/lightning-ai/pytorch-lighting/issues/3668