R^k
R/distributions.R
tfd_multivariate_normal_diag_plus_low_rank.Rd
The Multivariate Normal distribution is defined over R^k`` and parameterized by a (batch of) length-k loc vector (aka "mu") and a (batch of)
k x kscale matrix;
covariance = scale @ scale.Twhere
@` denotes
matrix-multiplication.
tfd_multivariate_normal_diag_plus_low_rank( loc = NULL, scale_diag = NULL, scale_identity_multiplier = NULL, scale_perturb_factor = NULL, scale_perturb_diag = NULL, validate_args = FALSE, allow_nan_stats = TRUE, name = "MultivariateNormalDiagPlusLowRank" )
loc | Floating-point Tensor. If this is set to NULL, loc is implicitly 0.
When specified, may have shape |
---|---|
scale_diag | Non-zero, floating-point Tensor representing a diagonal matrix added to scale.
May have shape |
scale_identity_multiplier | Non-zero, floating-point Tensor representing a scaled-identity-matrix
added to scale. May have shape |
scale_perturb_factor | Floating-point |
scale_perturb_diag | Floating-point |
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. |
allow_nan_stats | Logical, default TRUE. When TRUE, statistics (e.g., mean, mode, variance) use the value NaN to indicate the result is undefined. When FALSE, an exception is raised if one or more of the statistic's batch members are undefined. |
name | name prefixed to Ops created by this class. |
a distribution instance.
Mathematical Details
The probability density function (pdf) is,
pdf(x; loc, scale) = exp(-0.5 ||y||**2) / Z y = inv(scale) @ (x - loc) Z = (2 pi)**(0.5 k) |det(scale)|
where:
loc
is a vector in R^k
,
scale
is a linear operator in R^{k x k}
, cov = scale @ scale.T
,
Z
denotes the normalization constant, and,
||y||**2
denotes the squared Euclidean norm of y
.
A (non-batch) scale
matrix is:
scale = diag(scale_diag + scale_identity_multiplier ones(k)) + scale_perturb_factor @ diag(scale_perturb_diag) @ scale_perturb_factor.T
where:
scale_diag.shape = [k]
,
scale_identity_multiplier.shape = []
,
scale_perturb_factor.shape = [k, r]
, typically k >> r
, and,
scale_perturb_diag.shape = [r]
.
Additional leading dimensions (if any) will index batches.
If both scale_diag
and scale_identity_multiplier
are NULL
, then
scale
is the Identity matrix.
The MultivariateNormal distribution is a member of the
location-scale family, i.e., it can be
constructed as,
X ~ MultivariateNormal(loc=0, scale=1) # Identity scale, zero shift. Y = scale @ X + loc
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_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()
,
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()