An open API service indexing awesome lists of open source software.

https://github.com/turinglang/distributionsad.jl

Automatic differentiation of Distributions using Tracker, Zygote, ForwardDiff and ReverseDiff
https://github.com/turinglang/distributionsad.jl

Last synced: 4 months ago
JSON representation

Automatic differentiation of Distributions using Tracker, Zygote, ForwardDiff and ReverseDiff

Awesome Lists containing this project

README

        

# DistributionsAD.jl

[![CI](https://github.com/TuringLang/DistributionsAD.jl/actions/workflows/CI.yml/badge.svg?branch=master)](https://github.com/TuringLang/DistributionsAD.jl/actions/workflows/CI.yml?query=branch%3Amaster)

This package defines the necessary functions to enable automatic differentiation (AD) of the `logpdf` function from [Distributions.jl](https://github.com/JuliaStats/Distributions.jl) using the packages [Tracker.jl](https://github.com/FluxML/Tracker.jl), [Zygote.jl](https://github.com/FluxML/Zygote.jl), [ForwardDiff.jl](https://github.com/JuliaDiff/ForwardDiff.jl) and [ReverseDiff.jl](https://github.com/JuliaDiff/ReverseDiff.jl). The goal of this package is to make the output of `logpdf` differentiable wrt all continuous parameters of a distribution as well as the random variable in the case of continuous distributions.

AD of `logpdf` is fully supported and tested for the following distributions wrt all combinations of continuous variables (distribution parameters and/or the random variable) and using all defined distribution constructors:
- Univariate discrete
- `Bernoulli`
- `BetaBinomial`
- `Binomial`
- `Categorical`
- `Geometric`
- `NegativeBinomial`
- `Poisson`
- `PoissonBinomial`
- `Skellam`
- Univariate continuous
- `Arcsine`
- `Beta`
- `BetaPrime`
- `Biweight`
- `Cauchy`
- `Chi`
- `Chisq`
- `Cosine`
- `Distributions.AffineDistribution`
- `Epanechnikov`
- `Erlang`
- `Exponential`
- `FDist`
- `Frechet`
- `Gamma`
- `GeneralizedExtremeValue`
- `GeneralizedPareto`
- `Gumbel`
- `InverseGamma`
- `InverseGaussian`
- `Kolmogorov`
- `Laplace`
- `Levy`
- `Logistic`
- `LogitNormal`
- `LogNormal`
- `Normal`
- `NormalCanon`
- `NormalInverseGaussian`
- `Pareto`
- `PGeneralizedGaussian`
- `Rayleigh`
- `Semicircle`
- `SymTriangularDist`
- `TDist`
- `TriangularDist`
- `Triweight`
- `Uniform`
- `Weibull`
- Multivariate continuous
- `MvLogNormal`
- `MvNormal`
- Matrix-variate continuous
- `MatrixBeta`
- `Wishart`
- `InverseWishart`

# Get Involved

A number of distributions are still either broken or not fully supported for various reasons. See [this issue](https://github.com/TuringLang/DistributionsAD.jl/issues/2). If you can fix any of the broken ones, a PR is welcome!