2025
Kaggle Digit Recognizer
Top 5% on MNIST classification
Overview
Trained and compared five models on the MNIST handwritten digit dataset, from simple MLPs up to CNNs with batch normalization and data augmentation. The final submission reached the top 5% of the Kaggle Digit Recognizer leaderboard.
The Problem
Past the score, I wanted to see why the more complex architectures beat the simpler ones on image data, and which design decisions move the number.
My Role
Sole author. Designed and trained all five models, implemented the evaluation loop, and documented the architecture progression and accuracy deltas at each stage.
Key Features
- —Baseline simple MLP (25 → 15 → 10) with EarlyStopping and ReduceLROnPlateau callbacks
- —MLP with grid-searched learning rate and L2 regularization tuning
- —Progressive CNN architectures with BatchNormalization and Dropout
- —Data augmentation (rotation, shifting, zoom) for improved generalization
- —Pixel normalization and 28×28×1 tensor reshaping for CNN compatibility
- —Final model accuracy: 99.3%+, a top 5% Kaggle leaderboard submission
Challenges
The jump from MLP to CNN was bigger than I expected on this dataset. Flattening the pixels throws away spatial structure that a convolution keeps.
What I Learned
I compared the five models on accuracy alone. Tracking training time and parameter count beside it would have made the trade-offs easier to argue about.
Screenshots





