Type DirichletMultinomial
Namespace tensorflow.distributions
Parent Distribution
Interfaces IDirichletMultinomial
Dirichlet-Multinomial compound distribution. The Dirichlet-Multinomial distribution is parameterized by a (batch of)
length-`K` `concentration` vectors (`K > 1`) and a `total_count` number of
trials, i.e., the number of trials per draw from the DirichletMultinomial. It
is defined over a (batch of) length-`K` vector `counts` such that
`tf.reduce_sum(counts, -1) = total_count`. The Dirichlet-Multinomial is
identically the Beta-Binomial distribution when `K = 2`. #### Mathematical Details The Dirichlet-Multinomial is a distribution over `K`-class counts, i.e., a
length-`K` vector of non-negative integer `counts = n = [n_0,..., n_{K-1}]`. The probability mass function (pmf) is, ```none
pmf(n; alpha, N) = Beta(alpha + n) / (prod_j n_j!) / Z
Z = Beta(alpha) / N!
``` where: * `concentration = alpha = [alpha_0,..., alpha_{K-1}]`, `alpha_j > 0`,
* `total_count = N`, `N` a positive integer,
* `N!` is `N` factorial, and,
* `Beta(x) = prod_j Gamma(x_j) / Gamma(sum_j x_j)` is the
[multivariate beta function](
https://en.wikipedia.org/wiki/Beta_function#Multivariate_beta_function),
and,
* `Gamma` is the [gamma function](
https://en.wikipedia.org/wiki/Gamma_function). Dirichlet-Multinomial is a [compound distribution](
https://en.wikipedia.org/wiki/Compound_probability_distribution), i.e., its
samples are generated as follows. 1. Choose class probabilities:
`probs = [p_0,...,p_{K-1}] ~ Dir(concentration)`
2. Draw integers:
`counts = [n_0,...,n_{K-1}] ~ Multinomial(total_count, probs)` The last `concentration` dimension parametrizes a single Dirichlet-Multinomial
distribution. When calling distribution functions (e.g., `dist.prob(counts)`),
`concentration`, `total_count` and `counts` are broadcast to the same shape.
The last dimension of `counts` corresponds single Dirichlet-Multinomial
distributions. Distribution parameters are automatically broadcast in all functions; see
examples for details. #### Pitfalls The number of classes, `K`, must not exceed:
- the largest integer representable by `self.dtype`, i.e.,
`2**(mantissa_bits+1)` (IEE754),
- the maximum `Tensor` index, i.e., `2**31-1`. In other words,
Note: This condition is validated only when `self.validate_args = True`. #### Examples
Creates a 3-class distribution, with the 3rd class is most likely to be
drawn.
The distribution functions can be evaluated on counts.
Creates a 2-batch of 3-class distributions.
Show Example
K <= min(2**31-1, { tf.float16: 2**11, tf.float32: 2**24, tf.float64: 2**53 }[param.dtype])
Properties
- allow_nan_stats
- allow_nan_stats_dyn
- batch_shape
- batch_shape_dyn
- concentration
- concentration_dyn
- dtype
- dtype_dyn
- event_shape
- event_shape_dyn
- name
- name_dyn
- parameters
- parameters_dyn
- PythonObject
- reparameterization_type
- reparameterization_type_dyn
- total_concentration
- total_concentration_dyn
- total_count
- total_count_dyn
- validate_args
- validate_args_dyn
Public properties
object allow_nan_stats get;
object allow_nan_stats_dyn get;
TensorShape batch_shape get;
object batch_shape_dyn get;
object concentration get;
Concentration parameter; expected prior counts for that coordinate.
object concentration_dyn get;
Concentration parameter; expected prior counts for that coordinate.
object dtype get;
object dtype_dyn get;
TensorShape event_shape get;
object event_shape_dyn get;
string name get;
object name_dyn get;
IDictionary<object, object> parameters get;
object parameters_dyn get;
object PythonObject get;
object reparameterization_type get;
object reparameterization_type_dyn get;
object total_concentration get;
Sum of last dim of concentration parameter.
object total_concentration_dyn get;
Sum of last dim of concentration parameter.
object total_count get;
Number of trials used to construct a sample.
object total_count_dyn get;
Number of trials used to construct a sample.