Welcome to SymJAX’s documentation!

SymJAX = JAX+NetworkX

JAX

JAX is a XLA python interface that provides a Numpy-like user experience with just-in-time compilation and Autograd powered automatic differenciation. XLA is a compiler that optimizes a computational graph by fusing multiple kernels into one preventing intermediate computation, reducing memory operations and increasing performances.

NetworkX

NetworkX is a Python package for the creation, manipulation, and study of directed and undirected graphs is a Python package for the creation, manipulation, and study of directed and undirected graphs is a Python package for the creation, manipulation, and study of directed and undirected graphs.

SymJAX is a symbolic programming version of JAX providing a Theano-like user experience thanks to a NetworkX powered computational graph backend. In addition of simplifying graph input/output, variable updates and graph utilities, SymJAX also features machine learning and deep learning tools similar to Lasagne and Tensorflow1 as well as a lazy on-the-go execution capability like PyTorch and Tensorflow2.

This is an under development research project, not an official product, expect bugs and sharp edges; please help by trying it out, reporting bugs and missing pieces.

Installation Guide : Installation

Implementation Walkthrough : Computational Graph

Developer Guide : Development

Updates Roadmap : Roadmap

Modules

We briefly describe below the structure of SymJAX and what are (in term of functionalities) the closest analog from other known libraries: