shashi/ChainRulesCore.jl

It is like recipes but for AD! (Full functionality is in ChainRules.jl but this a a light weight dependency just to define sensitivities for your functions in your packages)

★ 0Forks 0JuliaGitHub ↗Compare

README

ChainRulesCore

Travis Coveralls

The ChainRulesCore package provides a variety of common utilities that can be used by downstream automatic differentiation (AD) tools to define and execute forward-, reverse-, and mixed-mode primitives.

This package is a WIP; the framework is essentially there, but there are a bunch of TODOs, virtually no tests, etc. PRs welcome! Documentation is incoming, which should help if you'd like to contribute.

Here are some of the basic goals for the package:

  • First-class support for complex differentiation via Wirtinger derivatives.

  • Mixed-mode composability without being coupled to a specific AD implementation.

  • Propagation semantics built-in, with default implementations that allow rule authors to easily opt-in to common optimizations (fusion, increment elision, memoization, etc.).

  • Control-inverted design: rule authors can fully specify derivatives in a concise manner while naturally allowing the caller to compute only what they need.

The ChainRulesCore source code follows the YASGuide.

Contributors

jrevelsararslanoxinaboxnickrobinson251willtebbuttjekbradburyJeffreySarnoff

Issues