This distribution is useful for regarding a collection of independent,
non-identical distributions as a single random variable. For example, the
Independent
distribution composed of a collection of Bernoulli
distributions might define a distribution over an image (where each
Bernoulli
is a distribution over each pixel).
tfd_independent( distribution, reinterpreted_batch_ndims = NULL, validate_args = FALSE, name = paste0("Independent", distribution$name) )
distribution | The base distribution instance to transform. Typically an instance of Distribution |
---|---|
reinterpreted_batch_ndims | Scalar, integer number of rightmost batch dims which will be regarded as event dims. When NULL all but the first batch axis (batch axis 0) will be transferred to event dimensions (analogous to tf$layers$flatten). |
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 | The name for ops managed by the distribution. Default value: Independent + distribution.name. |
a distribution instance.
More precisely, a collection of B
(independent) E
-variate random variables
(rv) {X_1, ..., X_B}
, can be regarded as a [B, E]
-variate random variable
(X_1, ..., X_B)
with probability
p(x_1, ..., x_B) = p_1(x_1) * ... * p_B(x_B)
where p_b(X_b)
is the
probability of the b
-th rv. More generally B, E
can be arbitrary shapes.
Similarly, the Independent
distribution specifies a distribution over
[B, E]
-shaped events. It operates by reinterpreting the rightmost batch dims as
part of the event dimensions. The reinterpreted_batch_ndims
parameter
controls the number of batch dims which are absorbed as event dims;
reinterpreted_batch_ndims <= len(batch_shape)
. For example, the log_prob
function entails a reduce_sum
over the rightmost reinterpreted_batch_ndims
after calling the base distribution's log_prob
. In other words, since the
batch dimension(s) index independent distributions, the resultant multivariate
will have independent components.
Mathematical Details
The probability function is,
prob(x; reinterpreted_batch_ndims) = tf.reduce_prod(dist.prob(x), axis=-1-range(reinterpreted_batch_ndims))
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_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_joint_distribution_sequential()
,
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()