Programming a neural network from scratch. Implements backpropagation and batch gradient descent, as well as layer-based activation functions. Inspired by http://neuralnetworksanddeeplearning.com/chap2.html.