This was a finger practice of implementing neural networks with simple backpropagation and gradient descent in numpy. Please take this implementation with a grain of salt, as many parts may not be optimal.
I managed to get MNIST under 1% error with five layers.
$ git clone https://github.com/bratorange/slunn.git
$ cd slunn
# Download the MNIST dataset and extract it here as folder MNIST
$ python3 -m venv venv
$ source venv/bin/activate
$ python main.py