An automatic differentiation engine in Python for gradient descent, also includes several simple models that use the engine. The implementation involves encapsulation, overloading, backpropagation and much more. The system is build upon Numpy for efficiency and ease of use.