A small deep learning framework, built from scratch using Python and NumPy. It it readily usable for MNIST classification with FC layers (mnist_fc) and convolutional layers (mnist_conv) and can be extended arbitrarily.
The framework uses the tensor class to hold, propagate and process information. Each tensor holds its own elements and has a shape parameter. The NeuralNetwork class can be used to instantiate a network with a list of its layers. The network will use Stochastic Gradient Descent SGD and Backpropagation to optimize its weights. It can be extended with arbitrary optimizers and optimization algorithms.
The framework provides the following layers:
- Pre-Processing:
- Input
- Flattening
- Activation Functions:
- Sigmoid
- Tanh
- ReLU
- Softmax
- Processing Layers:
- Fully-Connected (FC)
- Convolution2D
- Loss Layers:
- MSE
- Crossentropy