Project idea inspired from Samson Zhang
@YouTube
Implementation is quite different from the one in his Kaggle Notebook that:
- This implementation uses
Numba
to speed up the computations (I doubt this actually boosted the performance) - Uses OOP to modularize code.
- Uses the real
MNIST
Idx data sets, instead of Kaggle providedcsv
s. - Includes classes for handling
Idx1
,Idx3
IO. <<NNetworkMinimal>>
class enable saving the model state and restoring the trained state from serialized model objects.
After 5,000 iterations, the accuracy scores for MNIST
datasets were:
Training dataset
- 0.935367 (93.54%)Test dataset
- 0.928800 (92.88%)
For a thorough, step by step walkthrough, read the source code. It's comprehensively annotated.
Using <<NNetworkMinimal>>
with 5,000 iterations gave an accuracy score of 0.262367
for training dataset and an accuracy score of 0.263800
for test dataset.