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_bernoulli`

, `tfd_beta`

,
`tfd_binomial`

,
`tfd_categorical`

, `tfd_cauchy`

,
`tfd_chi2`

, `tfd_chi`

,
`tfd_cholesky_lkj`

,
`tfd_deterministic`

,
`tfd_dirichlet_multinomial`

,
`tfd_dirichlet`

, `tfd_empirical`

,
`tfd_exponential`

,
`tfd_gamma_gamma`

, `tfd_gamma`

,
`tfd_gaussian_process_regression_model`

,
`tfd_gaussian_process`

,
`tfd_geometric`

, `tfd_gumbel`

,
`tfd_half_cauchy`

,
`tfd_half_normal`

,
`tfd_hidden_markov_model`

,
`tfd_horseshoe`

,
`tfd_inverse_gamma`

,
`tfd_inverse_gaussian`

,
`tfd_joint_distribution_named`

,
`tfd_joint_distribution_sequential`

,
`tfd_kumaraswamy`

, `tfd_laplace`

,
`tfd_linear_gaussian_state_space_model`

,
`tfd_lkj`

, `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_probit_bernoulli`

,
`tfd_quantized`

,
`tfd_relaxed_bernoulli`

,
`tfd_relaxed_one_hot_categorical`

,
`tfd_sample_distribution`

,
`tfd_sinh_arcsinh`

,
`tfd_student_t_process`

,
`tfd_student_t`

,
`tfd_transformed_distribution`

,
`tfd_triangular`

,
`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_wishart_linear_operator`

,
`tfd_wishart_tri_l`

,
`tfd_wishart`

, `tfd_zipf`