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
- Host: GitHub
- URL: https://github.com/turinglang/distributionsad.jl
- Owner: TuringLang
- License: mit
- Created: 2019-09-01T14:14:01.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-04-17T14:50:56.000Z (about 1 year ago)
- Last Synced: 2024-05-01T13:27:38.245Z (about 1 year ago)
- Language: Julia
- Homepage:
- Size: 492 KB
- Stars: 148
- Watchers: 10
- Forks: 28
- Open Issues: 28
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# DistributionsAD.jl
[](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!