2025
Kaggle Digit Recognizer
Top 5% on MNIST classification
Overview
Trained and compared five progressively advanced models — from simple MLPs to CNNs with batch normalization and data augmentation — on the MNIST handwritten digit dataset. Reached top 5% on the Kaggle Digit Recognizer leaderboard.
The Problem
Beyond hitting a high score, the goal was to understand why more complex architectures outperform simpler ones on image data — and to build genuine intuition for which design decisions move the needle.
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%+ — top 5% Kaggle leaderboard submission
Challenges
Understanding why the jump from MLP to CNN was so dramatic on this dataset. Spatial structure in images is real — flattening pixels throws away information that convolutions naturally preserve.
What I Learned
Architecture choice is the highest-leverage decision in an ML project. EarlyStopping and ReduceLROnPlateau give you most of the training-dynamics optimization essentially for free.
Screenshots





