Partijas lieluma neatbilstības Pytorch var rasties dažādu iemeslu dēļ, kas bieži ir saistīti ar to, kā dati tiek apstrādāti vai pārveidoti apmācības laikā. Šeit ir daži piemēri:
1. neatbilstība nepareiza mērķa formāta dēļ:
- Pytorch, izmantojot `crossentropyloss", mērķim jābūt veseliem indeksiem, nevis ar vienu karstu kodētiem vektoriem. Ja mērķis ir ar vienu karstu kodētu, tas var izraisīt paketes lieluma neatbilstības kļūdu, jo modelis sagaida lieluma mērķi `[Batch_size]`, bet saņem lieluma tenzoru `[Batch_size, n_classes]`. Piemēram, ja modelis prognozē vienu no 24 klasēm, mērķim jābūt formas tensoram `(32,)` par partijas lielumu 32, nevis `(32, 24)` [1].
2. Jautājumu pārveidošana:
- Dažreiz pārveidošanas operācijas modelī var netīšām samazināt partijas lielumu. Piemēram, ja tensors tiek pārveidots tādā veidā, ka tiek mainīta tā pirmā dimensija (partijas lielums), tas var izraisīt neatbilstību, aprēķinot zaudējumu funkcijas, kas sagaida, ka ieejas un mērķa partijas izmēri atbilst [5].
3. Dataloader uzvedība:
- Pytorch's "Dataloader" dažreiz var atgriezt dažāda lieluma partijas, it īpaši, ja datu kopas lielums nav partijas lieluma reizinājums. Tas notiek, kad "Drop_last = viltus", izraisot pēdējo partiju mazāku par norādīto partijas lielumu. Lai arī tas parasti nav neatbilstības jautājums partijā, tas var radīt neskaidrības, ja netiek pareizi apstrādātas [3].
4. Pielāgota datu kopa vai modeļa ieviešana:
- Pielāgotas datu kopas vai modeļi var netīšām izraisīt partijas lieluma neatbilstības, ja dati vai modeļa izejas nav pareizi saskaņotas. Piemēram, ja pielāgota datu kopa atgriež datus negaidītā formātā vai ja modeļa uzplaukuma caurlaide maina datus tādā veidā, kas maina partijas lielumu, tas var izraisīt kļūdas apmācības laikā [7].
5. Zaudējumu funkcijas prasības:
- Dažādām zaudējumu funkcijām ir atšķirīgas prasības ieejas un mērķa formām. Piemēram, "L1Loss" abām ieejām ir jābūt vienādai formai, kas var izraisīt partijas lieluma neatbilstības, ja formas nav pareizi saskaņotas [2].
[1.]
[2] https://github.com/lightning-ai/pytorch-lightning/discussions/14812
[3] https://discuss.pytorch.org/t/problem-with-batch-size/114363
[4] https://discuss.pytorch.org/t/test-accuracy-with-different-batch-izes/22930
[5] https://discuss.pytorch.org/t/batch-size-mismatch/98354
[6] https://stackoverflow.com/questions/62123795/mismatch-in-size
[7] https://discuss.pytorch.org/t/batch-size-thatch/187427
[8] https://github.com/lightning-ai/pytorch-lightning/issues/3668