torch.distributions.MixtureSameFamily
class MixtureSameFamily extends Distributionnew MixtureSameFamily(mixture_distribution: Categorical, component_distribution: Distribution, options?: DistributionOptions)
- readonly
mixture_distribution(Categorical) - – The categorical distribution over mixture components.
- readonly
component_distribution(Distribution) - – The component distribution with rightmost batch dimension indexing components.
- readonly
arg_constraints(Record<string, Constraint>) - readonly
support(Constraint) - readonly
has_rsample(unknown) - readonly
mean(Tensor) - readonly
mode(Tensor) - readonly
variance(Tensor)
MixtureSameFamily distribution: mixture of same-family component distributions.
Creates a mixture distribution where all component distributions are from the same family, parameterized by a Categorical mixing distribution. Essential for:
- Gaussian Mixture Models (GMM)
- Flexible density estimation
- Multimodal distributions
- Approximate inference for complex posteriors
- Mixture experts and ensemble models
The mixture distribution samples components according to the Categorical distribution and then samples from the selected component.
\begin{aligned} \text{PDF: } f(x) = \sum_{k=1}^K \pi_k p_k(x) \\ \text{where } \pi_k = P(\text{component}=k), p_k(x) = \text{component}_k(x) \\ \text{log_prob: } \log f(x) = \log\left(\sum_{k=1}^K \pi_k p_k(x)\right) \\ \text{Sampling: } k \sim \text{Categorical}(\pi), x \sim p_k \\ \text{Entropy: } H(X) = \sum_k \pi_k H(p_k) - \sum_k \pi_k \ln(\pi_k) \end{aligned}Examples
// Mixture of 3 Gaussians
const mix = new Categorical({ probs: torch.tensor([0.3, 0.4, 0.3]) });
const comp = new Normal(
torch.tensor([-1.0, 0.0, 1.0]), // means for 3 components
torch.tensor([0.5, 0.3, 0.5]) // scales for 3 components
);
const gmm = new MixtureSameFamily(mix, comp);
gmm.sample(); // sample from the Gaussian mixture