patrick-kidger/equinox

Elegant easy-to-use neural networks + scientific computing in JAX. https://docs.kidger.site/equinox/

What it solves

Equinox provides the essential tools for building neural networks and models in JAX that are not included in the core JAX library. It simplifies the process of model definition by introducing a PyTorch-like syntax, making it easier for developers to experience the power of JAX without the complexity of managing state manually.

How it works

Equinox treats models as PyTrees (registered classes), which allows them to pass through JAX transformations like jit, grad, and vmap seamlessly. Unlike some other JAX frameworks, it does not use a hidden state or "magic" behind the scenes; it simply registers the model class as a PyTree so that JAX can natively understands how to operate on it.

Who it’s for

It is designed for researchers and developers who want to build neural networks in JAX but prefer a more intuitive, object-oriented syntax similar to PyTorch, as well as those who need advanced PyTree manipulation and runtime error handling.

Highlights

  • PyTorch-like syntax for defining models.
  • Full compatibility with the core JAX ecosystem and other JAX libraries.
  • Models are simple PyTrees, ensuring smooth integration with JAX transformations.
  • Includes filtered APIs for transformations and PyTree manipulation routines.
  • Supports runtime errors for easier debugging.

Related

  • Project
  • Project
  • Project
  • Project
  • Project