Out of curiosity, I decided to code and train my own CNN on the MNIST handwritten digits dataset, using mostly NumPy. After trying countless things and letting it run for what felt like an eternity, I finally achieved an accuracy of 52%.
The issues my code still faces include not doing batch normalization after passes, dealing with vanishing and exploding gradients, and some other mysterious problems.