Distribution Funsors

This interface provides a number of standard normalized probability distributions implemented as funsors.

class Distribution(*args)[source]

Bases: funsor.terms.Funsor

Funsor backed by a PyTorch/JAX distribution object.

Parameters:*args – Distribution-dependent parameters. These can be either funsors or objects that can be coerced to funsors via to_funsor() . See derived classes for details.
dist_class = 'defined by derived classes'
eager_reduce(op, reduced_vars)[source]
has_enumerate_support
classmethod eager_log_prob(*params)[source]
unscaled_sample(sampled_vars, sample_inputs, rng_key=None)[source]
enumerate_support(expand=False)[source]
entropy()[source]
mean()[source]
variance()[source]
class Beta(concentration1, concentration0, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.torch.Beta

class Cauchy(loc, scale, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.torch.Cauchy

class Chi2(df, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.torch.Chi2

class BernoulliProbs(probs, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of funsor.torch.distributions._PyroWrapper_BernoulliProbs

class BernoulliLogits(logits, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of funsor.torch.distributions._PyroWrapper_BernoulliLogits

class Binomial(total_count, probs, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.torch.Binomial

class Categorical(probs, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.torch.Categorical

class CategoricalLogits(logits, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of funsor.torch.distributions._PyroWrapper_CategoricalLogits

class Delta(v, log_density, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.delta.Delta

class Dirichlet(concentration, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.torch.Dirichlet

class DirichletMultinomial(concentration, total_count, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.conjugate.DirichletMultinomial

class Exponential(rate, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.torch.Exponential

class Gamma(concentration, rate, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.torch.Gamma

class GammaPoisson(concentration, rate, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.conjugate.GammaPoisson

class Geometric(probs, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.torch.Geometric

class Gumbel(loc, scale, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.torch.Gumbel

class HalfCauchy(scale, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.torch.HalfCauchy

class HalfNormal(scale, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.torch.HalfNormal

class Laplace(loc, scale, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.torch.Laplace

class LowRankMultivariateNormal(loc, cov_factor, cov_diag, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.torch.LowRankMultivariateNormal

class Multinomial(total_count, probs, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.torch.Multinomial

class MultivariateNormal(loc, scale_tril, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.torch.MultivariateNormal

class NonreparameterizedBeta(concentration1, concentration0, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.testing.fakes.NonreparameterizedBeta

class NonreparameterizedDirichlet(concentration, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.testing.fakes.NonreparameterizedDirichlet

class NonreparameterizedGamma(concentration, rate, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.testing.fakes.NonreparameterizedGamma

class NonreparameterizedNormal(loc, scale, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.testing.fakes.NonreparameterizedNormal

class Normal(loc, scale, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.torch.Normal

class Pareto(scale, alpha, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.torch.Pareto

class Poisson(rate, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.torch.Poisson

class StudentT(df, loc, scale, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.torch.StudentT

class Uniform(low, high, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.torch.Uniform

class VonMises(loc, concentration, value='value')

Bases: funsor.distribution.Distribution

dist_class

alias of pyro.distributions.torch.VonMises