Need help with autodidact?

Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

570 Stars 69 Forks MIT License 13 Commits 5 Opened issues

A pedagogical implementation of Autograd

Readme

This is a tutorial implementation based on the full version of Autograd.

Example use:

>>> import autograd.numpy as np # Thinly-wrapped numpy >>> from autograd import grad # The only autograd function you may ever need >>> >>> def tanh(x): # Define a function ... y = np.exp(-2.0 * x) ... return (1.0 - y) / (1.0 + y) ... >>> grad_tanh = grad(tanh) # Obtain its gradient function >>> grad_tanh(1.0) # Evaluate the gradient at x = 1.0 0.41997434161402603 >>> (tanh(1.0001) - tanh(0.9999)) / 0.0002 # Compare to finite differences 0.41997434264973155

We can continue to differentiate as many times as we like, and use numpy's vectorization of scalar-valued functions across many different input values:

>>> import matplotlib.pyplot as plt >>> x = np.linspace(-7, 7, 200) >>> plt.plot(x, tanh(x), ... x, grad(tanh)(x), # first derivative ... x, grad(grad(tanh))(x), # second derivative ... x, grad(grad(grad(tanh)))(x), # third derivative ... x, grad(grad(grad(grad(tanh))))(x), # fourth derivative ... x, grad(grad(grad(grad(grad(tanh)))))(x), # fifth derivative ... x, grad(grad(grad(grad(grad(grad(tanh))))))(x)) # sixth derivative >>> plt.show()

Autograd was written by Dougal Maclaurin, David Duvenaud and Matt Johnson. See the main page for more information.