This repository contains the implementation of deep learning networks from scratch. It project was developed as a part of the programming exercises of the Deep Learning course offered by the Pattern Recognition Lab at Friedrich-Alexander-Universität (FAU).
The codes are written in Python using object oriented programming concepts such as, inheritance or polymorphism. All fundamental layers, activation and loss functions, optimizers and regularizers are implemented by coding the corresponding mathematical operations using NumPy only, without the use of any deep learning frameworks.
The project is implemented in three parts as mentioned below. NeuralNetwork.py
imports all layers and functions and runs them. NeuralNetworkTests.py
contains unit tests for each and every layer and function to check if the implementation was properly done.
The main class running everything is NeuralNetwork.py
. Various unit tests for every layer and function are included in NeuralNetworkTests.py
.
Detailed descriptions of implementation, along with methods and mathematical formulations can be found inside Protocols
.