Turing.jl is a Julia library for general-purpose probabilistic programming. Turing allows the user to write models using the standard Julia syntax, and provides a wide range of Monte Carlo sampling and optimisation based inference methods for solving problems across probabilistic machine learning, Bayesian statistics and data science. Compared to other probabilistic programming languages, Turing specializes in modularity, and decouples the modelling language (i.e., the compiler) and inference methods. Turing's modular design and the high-level numerical language Julia make Turing remarkably extensible: new model families and inference methods can be easily added.
Current functionalities include:
- General-purpose probabilistic programming with an intuitive modelling interface
- Robust, efficient Hamiltonian Monte Carlo (HMC) sampling for differentiable posterior distributions
- Particle MCMC sampling for complex posterior distributions involving discrete variables and stochastic control flows
- Compositional inference via Gibbs sampling that combines particle MCMC, HMC, Random-Walk MH (RWMH) and Elliptical Slice Sampling
- Advanced variational inference based on ADVI and Normalising Flows
If you use Turing for your research, please consider citing the following publication: Hong Ge, Kai Xu, and Zoubin Ghahramani: Turing: a language for flexible probabilistic inference. AISTATS 2018 pdf bibtex