Στόχος: να ακολουθήσετε τον υπολογισμό ενός δικτύου και να διακρίνετε εκπαίδευση και επαγωγή.
Η εμπρόσθια διάδοση (forward pass) εφαρμόζει κάθε στρώμα με τη σειρά. Παράγει τα logits, και μετά την απώλεια αν οι στόχοι είναι διαθέσιμοι. Δεν τροποποιεί κανένα βάρος.
logits = model(x) # εμπρόσθια διάδοση
loss = criterion(logits, y)Για μια παρτίδα x σχήματος (32, 20), ένα στρώμα Linear(20, 64) δίνει (32, 64).
Ένα δεύτερο Linear(64, 4) δίνει (32, 4). Ο άξονας batch διατηρείται· ο τελευταίος άξονας
αλλάζει ανάλογα με το στρώμα.
Στην εκπαίδευση, το δίκτυο διατηρεί τις πληροφορίες που χρειάζονται για τον υπολογισμό των κλίσεων. Στην επαγωγή, απενεργοποιούμε αυτή την παρακολούθηση και θέτουμε το μοντέλο σε λειτουργία αξιολόγησης:
model.eval()
with torch.inference_mode():
logits = model(x)
predictions = logits.argmax(dim=1)Το model.eval() ρυθμίζει τη συμπεριφορά του Dropout και του BatchNorm. Το inference_mode() αποφεύγει την
κατασκευή του γράφου κλίσεων. Οι δύο πράξεις είναι συμπληρωματικές.
Ένα δίκτυο είναι ένας γράφος πράξεων. Το PyTorch απομνημονεύει ποιες πράξεις παρήγαγαν
κάθε τανυστή όταν requires_grad=True. Αυτό το ίχνος θα διασχιστεί με αντίστροφη σειρά από
την οπισθοδιάδοση.
argmax πριν από τη συνάρτηση απώλειας: η πράξη καταστρέφει τη χρήσιμη πληροφορία για την
κλίση.model.eval() κατά την επικύρωση.Μαθαίνει η εμπρόσθια διάδοση; Γιατί καλούμε ταυτόχρονα eval() και
inference_mode();
Όχι, υπολογίζει. Το eval() αλλάζει ορισμένα στρώματα· το inference_mode() απενεργοποιεί τον
γράφο κλίσεων.
Γράψτε ένα ψευδο-τεστ που καλεί δύο φορές το ίδιο μοντέλο που περιέχει dropout, πρώτα σε
λειτουργία εκπαίδευσης και μετά σε λειτουργία αξιολόγησης. Προβλέψτε ποια αποτελέσματα πρέπει να είναι ταυτόσημα
και εξηγήστε τον διακριτό ρόλο του eval() και του inference_mode(). Παραδοτέο: τεστ και διάγνωση.
Ανάγνωση: η εμπρόσθια διάδοση υπολογίζει τις εξόδους και στις δύο περιπτώσεις, αλλά μόνο η διαδρομή
εκπαίδευσης διατηρεί όσα χρειάζονται για τον υπολογισμό των κλίσεων. Στην επαγωγή,
συνδυάστε model.eval() και torch.inference_mode(). Η παγίδα είναι να πιστέψετε ότι το ένα
αντικαθιστά το άλλο: ελέγχουν διαφορετικούς μηχανισμούς.