Announcing AutoGrad.jl <https://github.com/denizyuret/AutoGrad.jl>: an automatic differentiation package for Julia. It is a Julia port of the popular Python autograd <https://github.com/HIPS/autograd> package. It can differentiate regular Julia code that includes loops, conditionals, helper functions, closures etc. by keeping track of the primitive operations and using this execution trace to compute gradients. It uses reverse mode differentiation (a.k.a. backpropagation) so it can efficiently handle functions with array inputs and scalar outputs. It can compute gradients of gradients to handle higher order derivatives.
Large parts of the code are directly ported from the Python autograd <https://github.com/HIPS/autograd> package. I'd like to thank autograd author Dougal Maclaurin for his support. See (Baydin et al. 2015) <https://arxiv.org/abs/1502.05767> for a general review of automatic differentiation, autograd tutorial <https://github.com/HIPS/autograd/blob/master/docs/tutorial.md> for some Python examples, and Dougal's PhD thesis for design principles. JuliaDiff <http://www.juliadiff.org/> has alternative differentiation tools for Julia. best, deniz
