ZhuSuan is a python library for Generative Models, built upon Tensorflow. Unlike existing deep learning libraries, which are mainly designed for supervised tasks, ZhuSuan is featured for its deep root into Bayesian Inference, thus supporting various kinds of generative models: both the traditional hierarchical Bayesian models and recent deep generative models.
With ZhuSuan, users can enjoy powerful fitting and multi-GPU training of deep learning, while at the same time they can use generative models to model the complex world, exploit unlabeled data and deal with uncertainty by performing principled Bayesian inference.
-
Kinds of variational posteriors we support:
- Mean-field posterior: Fully-factorized.
- Structured posterior: With user specified dependencies.
-
Variational objectives we support:
- SGVB: Stochastic gradient variational Bayes
- IWAE: Importance weighted objectives
- NVIL: Score function estimator with variance reduction
- VIMCO: Multi-sample score function estimator with variance reduction
- Reweighted Wake-sleep (RWS): With user specified adaptive proposal.
- Hamiltonian Monte Carlo (HMC): With step size and mass adaptation.
ZhuSuan is still under development. Before the first stable release (1.0), please clone the repository and run
pip install .
in the main directory. This will install ZhuSuan and its dependencies automatically. ZhuSuan also requires Tensorflow version 1.0 or later.
If you are developing ZhuSuan, you may want to install in an "editable" or "develop" mode. See the Contribution section below.
Documentation is available online: zhusuan.readthedocs.io
To run the provided examples, you may need extra dependencies to be installed. This can be done by
pip install ".[examples]"
- Gaussian: HMC
- Toy 2D Intractable Posterior: SGVB
- Bayesian Neural Networks: SGVB
- Variational Autoencoder (VAE): SGVB, IWAE
- Convolutional VAE: SGVB
- Semi-supervised VAE (Kingma, 2014): SGVB, RWS
- Deep Sigmoid Belief Networks RWS, VIMCO
- Logistic Normal Topic Model: HMC
To install ZhuSuan in an "editable" or "develop" mode, run
pip install -e .
in the main directory. This installation is removable by
pip uninstall zhusuan
Additional dependencies for developments can be installed by
pip install ".[dev]"
This command will run automatic tests in the main directory.
python -m unittest discover -v
After running tests, to ensure test coverage over the developments, run
coverage report --include="zhusuan/*"
We follow PEP8 python code style. To check, in the main directory, run
pep8 .
Docs are written under docs/
directory as RestructuredText (.rst
) files.
index.rst
is the main page. A Tutorial on RestructuredText can be found
here.
API References are automatically generated by
Sphinx. They are under doc/api/
directory and should be regenerated each time when any code changes:
make api
To compile docs into webpages, Run
make html
under docs/
directory. The generated webpages are in docs/_build
and
can be viewed with browsers.