Οι αναντιστοιχίες μεγέθους παρτίδας στο Pytorch μπορούν να εμφανιστούν λόγω διαφόρων λόγων, που συχνά σχετίζονται με τον τρόπο επεξεργασίας ή αναμόρφωσης των δεδομένων κατά τη διάρκεια της εκπαίδευσης. Ακολουθούν μερικά παραδείγματα:
1. Αναντιστοιχία λόγω λανθασμένης μορφής στόχου:
- Στο Pytorch, όταν χρησιμοποιείτε `crossentropyloss`, ο στόχος πρέπει να είναι δείκτες ακέραιων, όχι one-hot κωδικοποιημένοι φορείς. Εάν ο στόχος είναι κωδικοποιημένος με ένα καυτό, μπορεί να οδηγήσει σε σφάλμα αναντιστοιχίας μεγέθους παρτίδας επειδή το μοντέλο αναμένει στόχο μεγέθους `[batch_size]`, αλλά λαμβάνει ένα tensor μεγέθους `[batch_size, n_classes]. Για παράδειγμα, εάν το μοντέλο προβλέπει μία από τις 24 κατηγορίες, ο στόχος πρέπει να είναι ένας τανυστήρας σχήματος `(32,)` για μέγεθος παρτίδας 32, όχι `(32, 24)` [1].
2. Ανασκόπηση ζητημάτων:
- Μερικές φορές, οι εργασίες αναμόρφωσης στο μοντέλο μπορούν να μειώσουν κατά λάθος το μέγεθος της παρτίδας. Για παράδειγμα, εάν ένας τανυστήρας αναμορφωθεί κατά τρόπο που η πρώτη του διάσταση (μέγεθος παρτίδας) μεταβάλλεται, αυτό μπορεί να οδηγήσει σε αναντιστοιχία όταν υπολογίζει τις λειτουργίες απώλειας που αναμένουν τα μεγέθη των παρτίδων εισόδου και στόχου για να ταιριάζουν [5].
3. Συμπεριφορά Dataloader:
- Το `dataloader 'του Pytorch μπορεί μερικές φορές να επιστρέψει παρτίδες διαφορετικών μεγεθών, ειδικά εάν το μέγεθος του συνόλου δεδομένων δεν είναι πολλαπλάσιο του μεγέθους της παρτίδας. Αυτό συμβαίνει όταν `drop_last = false ', προκαλώντας την τελευταία παρτίδα να είναι μικρότερη από το καθορισμένο μέγεθος παρτίδας. Αν και δεν είναι συνήθως ένα ζήτημα αναντιστοιχίας μέσα σε μια παρτίδα, μπορεί να προκαλέσει σύγχυση εάν δεν αντιμετωπιστεί σωστά [3].
4. Προσαρμοσμένο σύνολο δεδομένων ή υλοποίηση μοντέλου:
- Τα προσαρμοσμένα σύνολα δεδομένων ή τα μοντέλα ενδέχεται να προκαλέσουν κατά λάθος τις αναντιστοιχίες μεγέθους παρτίδας εάν τα δεδομένα ή τα μοντέλα δεν είναι σωστά ευθυγραμμισμένα. Για παράδειγμα, εάν ένα προσαρμοσμένο σύνολο δεδομένων επιστρέφει δεδομένα σε μια απροσδόκητη μορφή ή εάν το Pass Pass ενός μοντέλου αναδιαμορφώνει τα δεδομένα με τρόπο που μεταβάλλει το μέγεθος της παρτίδας, αυτό μπορεί να οδηγήσει σε σφάλματα κατά τη διάρκεια της εκπαίδευσης [7].
5. Απαιτήσεις λειτουργίας απώλειας:
- Οι διαφορετικές λειτουργίες απώλειας έχουν διαφορετικές απαιτήσεις για σχήματα εισόδου και στόχου. Για παράδειγμα, το `l1loss` απαιτεί και οι δύο εισροές να έχουν το ίδιο σχήμα, γεγονός που μπορεί να οδηγήσει σε αναντιστοιχίες μεγέθους παρτίδας εάν τα σχήματα δεν ευθυγραμμίζονται σωστά [2].
[1] https://stackoverflow.com/questions/74785188/pytorch-complaining-about-input-and-label-batch-size-satchatch
[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-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-lightning/issues/3668