Jump to Content

Tangent: automatic differentiation using source code transformation in Python

Bart van Merriënboer
Alexander B Wiltschko
Dan Moldovan
ML Systems NIPS Workshop 2017 (2017)


Automatic differentiation (AD) is an essential primitive for machine learning programming systems. Tangent is a Python package that performs AD using source code transformation (SCT) in Python. It takes numeric functions written in a syntactic subset of Python and NumPy as input, and transforms them into new Python functions which calculate a derivative. This approach to automatic differentiation is different from existing packages popular in machine learning, such as TensorFlow and Autograd. Advantages are that Tangent generates gradient code in Python which is readable by the user and easy to understand and debug. Tangent also introduces a new syntax for easily injecting code into the generated gradient code, further improving usability.