Στόχος: να κατασκευάσετε νοερά ένα MLP και να μετρήσετε τις παραμέτρους του.
Ένα MLP είναι ένα δίκτυο εμπρόσθιας διάδοσης που αποτελείται από πλήρως συνδεδεμένα στρώματα.
a⁽⁰⁾ = x
z⁽ˡ⁾ = W⁽ˡ⁾a⁽ˡ⁻¹⁾ + b⁽ˡ⁾
a⁽ˡ⁾ = φ(z⁽ˡ⁾)Ένα στρώμα Linear(p, q) περιέχει p × q βάρη και q πολώσεις, δηλαδή (p + 1)q
παραμέτρους. Ένα μοντέλο 784 → 128 → 10 περιέχει επομένως 784×128+128 + 128×10+10 = 101 770 παραμέτρους.
from torch import nn
model = nn.Sequential(
nn.Flatten(),
nn.Linear(28 * 28, 128),
nn.ReLU(),
nn.Linear(128, 10),
)«Κρυφό» σημαίνει ότι η έξοδός του δεν είναι ούτε η ακατέργαστη είσοδος ούτε η παραδοτέα πρόβλεψη. Κατασκευάζει μια ενδιάμεση αναπαράσταση. Δεν πρέπει να υποθέτουμε ότι κάθε νευρώνας έχει ένα απλό ανθρώπινο νόημα· μια αναπαράσταση είναι συχνά κατανεμημένη σε πολλές μονάδες.
Η έξοδος εξαρτάται από την εργασία:
| Εργασία | Ακατέργαστη έξοδος |
|---|---|
| Βαθμωτή παλινδρόμηση | 1 τιμή |
| Δυαδική ταξινόμηση | 1 logit |
| Ταξινόμηση K κλάσεων | K logits |
| Multilabel K ετικετών | K ανεξάρτητα logits |
Ένα logit είναι ένα μη κανονικοποιημένο σκορ. Στην ταξινόμηση πολλών κλάσεων, το PyTorch περιμένει
γενικά τα logits απευθείας· η CrossEntropyLoss εφαρμόζει τον κατάλληλο αριθμητικά
σταθερό μετασχηματισμό.
softmax στο μοντέλο πριν από την CrossEntropyLoss.Πόσες παραμέτρους περιέχει το Linear(20, 5); Ποια διάσταση εξόδου για 7
αποκλειστικές κλάσεις;
20×5 + 5 = 105. Χρειάζονται 7 logits.
Υπολογίστε σχήματα και παραμέτρους ενός MLP 20 → 8 → 5 → 3, με τις πολώσεις. Προτείνετε στη συνέχεια
μια παραλλαγή δύο φορές μικρότερη και προσδιορίστε τι κρατάτε σταθερό για να συγκρίνετε τις
δύο. Επιτυχία: κάθε πίνακας είναι σωστά προσανατολισμένος και το πρωτόκολλο δεν αγγίζει το σύνολο δοκιμής.
Ανάγνωση: ένα γραμμικό στρώμα αλλάζει την τελευταία διάσταση, ποτέ το μέγεθος της παρτίδας. Για
μια ταξινόμηση K κλάσεων, το τελευταίο στρώμα παράγει ακριβώς K logits. Η
κύρια παγίδα είναι η εφαρμογή μιας ενεργοποίησης εξόδου ασύμβατης με τη συνάρτηση
απώλειας, για παράδειγμα softmax πριν από την CrossEntropyLoss.