Mini-project B — optional, non-gating The digit reader

Build the s5-1 MLP on MNIST, change one thing (width, depth, dropout, or epochs), report test accuracy before and after, and produce a 12-digit misclassification gallery with a one-paragraph reading of what the model confuses and why that's plausible.

Visual

12-digit misclassification gallery, true and predicted labels, widened MLP
The one change tried here: doubling the hidden widths (784-128-64-10 → 784-256-128-10). Test accuracy: 0.9479 → 0.9580 (+1.01 points) — a real, if modest, gain from more capacity on a dataset large enough (60,000 images) that the extra capacity doesn't obviously overfit in 15 epochs.

Reading the gallery: the widened MLP's remaining errors cluster on digits that are genuinely ambiguous even to a human at a glance — a hurried 4 that reads as a 9, a 7 with a crossbar that reads as a 2, a thin 5 that reads as a 6. None of the misclassifications look like the model confusing visually dissimilar digits; they're concentrated where the pen strokes themselves are ambiguous, which is a plausible failure mode for a model reading raw pixel intensities with no notion of stroke order or curvature.

Open mini-project.ipynb to reproduce it yourself, or try a different single change (depth, dropout, epochs) and compare.

This marks "unstructured-data" as touched in your progress tracker. It does not gate module mastery — Project A's six checkpoints are the only requirement for "project complete."