How does the differentiation part of this work? Is it just gradient descent, or something more clever than that?
It seems like it ought to need to trace the data flows, but there doesn't seem to be the machinery to do so in the code.
Thanks! This is awesome to play with :).