Rackpropagator - automatic differentiation in Racket

I've been working on an automatic differentiation library recently and thought I'd share the current work-in-progress. I've had fun writing it and have learned a lot about the Racket macro system in the process!

It provides so-called 'reverse mode' AD, implemented as syntax transformation. A function definition (written in a subset of Racket) can be macro-transfomed into a function that also computes its gradient. See the docs for some examples and references.

The output it produces can be quite inefficient at the moment, along with a few other limitations. I'm currently thinking about how to improve this.

Also, the build on the package server seems to be failing, although I'm not sure why.

7 Likes

seems like not package's problem:

raco setup: making: <pkgs>/rackpropagator-lib/rackpropagator
raco setup:  in <pkgs>/rackpropagator-lib/rackpropagator
Killed
1 Like