R/distributions.R
tfd_joint_distribution_sequential.Rd
This distribution enables both sampling and joint probability computation from a single model specification.
tfd_joint_distribution_sequential(model, validate_args = FALSE, name = NULL)
model | list of either |
---|---|
validate_args | Logical, default FALSE. When TRUE distribution parameters are checked for validity despite possibly degrading runtime performance. When FALSE invalid inputs may silently render incorrect outputs. Default value: FALSE. |
name | name prefixed to Ops created by this class. |
a distribution instance.
A joint distribution is a collection of possibly interdependent distributions.
Like tf$keras$Sequential
, the JointDistributionSequential
can be specified
via a list
of functions (each responsible for making a
tfp$distributions$Distribution
-like instance). Unlike
tf$keras$Sequential
, each function can depend on the output of all previous
elements rather than only the immediately previous.
Mathematical Details
The JointDistributionSequential
implements the chain rule of probability.
That is, the probability function of a length-d
vector x
is,
p(x) = prod{ p(x[i] | x[:i]) : i = 0, ..., (d - 1) }
The JointDistributionSequential
is parameterized by a list
comprised of
either:
tfp$distributions$Distribution
-like instances or,
callable
s which return a tfp$distributions$Distribution
-like instance.
Each list
element implements the i
-th full conditional distribution,
p(x[i] | x[:i])
. The "conditioned on" elements are represented by the
callable
's required arguments. Directly providing a Distribution
-like
nstance is a convenience and is semantically identical a zero argument
callable
.
Denote the i
-th callable
s non-default arguments as args[i]
. Since the
callable
is the conditional manifest, 0 <= len(args[i]) <= i - 1
. When
len(args[i]) < i - 1
, the callable
only depends on a subset of the
previous distributions, specifically those at indexes:
range(i - 1, i - 1 - num_args[i], -1)
.
Name resolution: The names of
JointDistributionSequentialcomponents are defined by explicit
name arguments passed to distributions (
tfd.Normal(0., 1., name='x')) and/or by the argument names in distribution-making functions (
lambda x: tfd.Normal(x., 1.)). Both approaches may be used in the same distribution, as long as they are consistent; referring to a single component by multiple names will raise a
ValueError`. Unnamed components will be assigned a dummy name.
For usage examples see e.g. tfd_sample()
, tfd_log_prob()
, tfd_mean()
.
Other distributions:
tfd_autoregressive()
,
tfd_batch_reshape()
,
tfd_bates()
,
tfd_bernoulli()
,
tfd_beta_binomial()
,
tfd_beta()
,
tfd_binomial()
,
tfd_categorical()
,
tfd_cauchy()
,
tfd_chi2()
,
tfd_chi()
,
tfd_cholesky_lkj()
,
tfd_continuous_bernoulli()
,
tfd_deterministic()
,
tfd_dirichlet_multinomial()
,
tfd_dirichlet()
,
tfd_empirical()
,
tfd_exp_gamma()
,
tfd_exp_inverse_gamma()
,
tfd_exponential()
,
tfd_gamma_gamma()
,
tfd_gamma()
,
tfd_gaussian_process_regression_model()
,
tfd_gaussian_process()
,
tfd_generalized_normal()
,
tfd_geometric()
,
tfd_gumbel()
,
tfd_half_cauchy()
,
tfd_half_normal()
,
tfd_hidden_markov_model()
,
tfd_horseshoe()
,
tfd_independent()
,
tfd_inverse_gamma()
,
tfd_inverse_gaussian()
,
tfd_johnson_s_u()
,
tfd_joint_distribution_named_auto_batched()
,
tfd_joint_distribution_named()
,
tfd_joint_distribution_sequential_auto_batched()
,
tfd_kumaraswamy()
,
tfd_laplace()
,
tfd_linear_gaussian_state_space_model()
,
tfd_lkj()
,
tfd_log_logistic()
,
tfd_log_normal()
,
tfd_logistic()
,
tfd_mixture_same_family()
,
tfd_mixture()
,
tfd_multinomial()
,
tfd_multivariate_normal_diag_plus_low_rank()
,
tfd_multivariate_normal_diag()
,
tfd_multivariate_normal_full_covariance()
,
tfd_multivariate_normal_linear_operator()
,
tfd_multivariate_normal_tri_l()
,
tfd_multivariate_student_t_linear_operator()
,
tfd_negative_binomial()
,
tfd_normal()
,
tfd_one_hot_categorical()
,
tfd_pareto()
,
tfd_pixel_cnn()
,
tfd_poisson_log_normal_quadrature_compound()
,
tfd_poisson()
,
tfd_power_spherical()
,
tfd_probit_bernoulli()
,
tfd_quantized()
,
tfd_relaxed_bernoulli()
,
tfd_relaxed_one_hot_categorical()
,
tfd_sample_distribution()
,
tfd_sinh_arcsinh()
,
tfd_skellam()
,
tfd_spherical_uniform()
,
tfd_student_t_process()
,
tfd_student_t()
,
tfd_transformed_distribution()
,
tfd_triangular()
,
tfd_truncated_cauchy()
,
tfd_truncated_normal()
,
tfd_uniform()
,
tfd_variational_gaussian_process()
,
tfd_vector_diffeomixture()
,
tfd_vector_exponential_diag()
,
tfd_vector_exponential_linear_operator()
,
tfd_vector_laplace_diag()
,
tfd_vector_laplace_linear_operator()
,
tfd_vector_sinh_arcsinh_diag()
,
tfd_von_mises_fisher()
,
tfd_von_mises()
,
tfd_weibull()
,
tfd_wishart_linear_operator()
,
tfd_wishart_tri_l()
,
tfd_wishart()
,
tfd_zipf()