Die Mismpflegee in Pytorch -Stapelgröße kann aus verschiedenen Gründen auftreten, die häufig darauf zusammenhängen, wie Daten während des Trainings verarbeitet oder umgestaltet werden. Hier sind einige Beispiele:
1. Fehlanpassung aufgrund eines falschen Zielformats:
- In Pytorch sollte das Ziel bei Verwendung von `crosseltropyloss` keine ganzzahligen Indizes sein, nicht in einheiße codierte Vektoren. Wenn das Ziel einhot codiert ist, kann es zu einem Fehlanpassungsfehler einer Stapelgröße führen, da das Modell ein Ziel der Größe `[batch_size]` `erwartet, aber einen Tensor der Größe` [batch_size, n_classses] `erhält. Wenn das Modell beispielsweise eine von 24 Klassen vorhersagt, sollte das Ziel ein Tensor der Form sein `(32,)` für eine Chargengröße von 32, nicht `(32, 24)` [1].
2. Umgestaltung von Problemen:
- Manchmal kann die Umgestaltung von Vorgängen innerhalb des Modells versehentlich die Chargengröße verringern. Wenn beispielsweise ein Tensor so umgeändert wird, dass seine erste Dimension (Stapelgröße) geändert wird, kann dies zu einem Missverhältnis führen, wenn Verlustfunktionen berechnet werden, die die Stapelgrößen von Eingabe und Ziel zugute kommen [5].
3.. Dataloader -Verhalten:
- Pytorchs "Dataloader" kann manchmal Stapel unterschiedlicher Größen zurückgeben, insbesondere wenn die Datensatzgröße nicht ein Vielfaches der Chargengröße ist. Dies geschieht, wenn `Drop_last = false` ist, was dazu führt, dass die letzte Stapel kleiner als die angegebene Chargengröße ist. Obwohl dies in einer Stapel normalerweise nicht ein Fehlpaarungsproblem ist, kann dies zu Verwirrung führen, wenn sie nicht ordnungsgemäß behandelt werden [3].
4. benutzerdefinierte Datensatz- oder Modellimplementierung:
- Benutzerdefinierte Datensätze oder Modelle können versehentlich zu Uneinfängern der Stapelgröße führen, wenn die Daten oder die Modellausgaben nicht korrekt ausgerichtet sind. Wenn beispielsweise ein benutzerdefinierter Datensatz Daten in einem unerwarteten Format zurückgibt oder wenn die Vorwärtsverkleidung eines Modells die Daten auf eine Weise umgestaltet, die die Chargengröße verändert, kann dies zu Fehlern während des Trainings führen [7].
5. Verlustfunktionsanforderungen:
- Unterschiedliche Verlustfunktionen haben unterschiedliche Anforderungen an Eingabe- und Zielformen. Zum Beispiel verlangt "L1loss", dass beide Eingänge die gleiche Form haben, was zu Fehlanpassungen der Stapelgröße führen kann, wenn sich die Formen nicht richtig ausrichten [2].
[1] https://stackoverflow.com/questions/74785188/pytorch-complaining-about-input--label-batch-Size-Mismatchatch
[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-curacy-with-different-batch-ssices/22930
[5] https://discuss.pytorch.org/t/batch-ssize-mismismatch/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-lightning/issues/3668