SymJAX: symbolic CPU/GPU/TPU programming

This is an under-development research project, not an official product, expect bugs and sharp edges; please help by trying it out, reporting bugs. Reference docs
What is SymJAX ?
SymJAX is a symbolic programming version of JAX simplifying graph input/output/updates and providing additional functionalities for general machine learning and deep learning applications. From an user perspective SymJAX apparents to Theano with fast graph optimization/compilation and broad hardware support, along with Lasagne-like deep learning functionalities
Why SymJAX ?
The number of libraries topping Jax/Tensorflow/Torch is large and growing by the day. What SymJAX offers as opposed to most is an all-in-one library with diverse functionalities such as
- dozens of various datasets with clear descriptions and one line import
- versatile set of functions from ffts, linear algebraic tools, random variables, ...
- advanced signal processing tools such as multiple wavelet families (in time and frequency domain), multiple time-frequency representations, apodization windows, ...
- IO utilities to monitor/save/track specific statistics during graph execution through h5 files and numpy, simple and explicit graph saving allowing to save and load models without burden
- side utilities such as automatic batching of dataset, data splitting, cross-validation, ...
and most importantly, a SYMBOLIC/DECLARATIVE programming environment allowing CONCISE/EXPLICIT/OPTIMIZED computations.
For a deep network oriented imperative library built on JAX and with a JAX syntax check out FLAX.
Examples
import sys
import symjax as sj
import symjax.tensor as T
# create our variable to be optimized
mu = T.Variable(T.random.normal((), seed=1))
# create our cost
cost = T.exp(-(mu-1)**2)
# get the gradient, notice that it is itself a tensor that can then
# be manipulated as well
g = sj.gradients(cost, mu)
print(g)
# (Tensor: shape=(), dtype=float32)
# create the compiled function that will compute the cost and apply
# the update onto the variable
f = sj.function(outputs=cost, updates={mu:mu-0.2*g})
for i in range(10):
print(f())
# 0.008471076
# 0.008201109
# 0.007946267
# ...
Installation
Make sure to install all the needed GPU drivers (for GPU support, not mandatory) and install JAX as described in this guide.
Metadata
Release files for symjax 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| symjax-0.5.0.tar.gz | 149.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| symjax-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 321.8 kB
Release files / symjax-0.5.0.tar.gz
| Download URL | symjax-0.5.0.tar.gz |
|---|---|
| Size | 149.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
30444d4f3f4bcb439da756737e06efee85bf1dd70b05d23486f2a645855976c7
|
|
BLAKE2b-256 checksum How to use checksums |
961c8cf20210088ec418a704df33d554ce8b6c56abe2406512d9fdc138234bc8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6
|
Release files / symjax-0.5.0-py3-none-any.whl
| Download URL | symjax-0.5.0-py3-none-any.whl |
|---|---|
| Size | 172.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b34d82a2290ce4d614d0f6b58b4916751baec9a70166579e53046a1a90d3f763
|
|
BLAKE2b-256 checksum How to use checksums |
d16104522a9915d442417195381744e0639190add9139f9cf2d624e7500b3991
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.6
|
Security for symjax 0.5.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.