class_docstr: The multivariate normal distribution on `R^k`.
  
  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 k`
  `covariance_matrix` matrices that are the covariance.
  This is different than the other multivariate normals, which are parameterized
  by a matrix more akin to the standard deviation.
  
  #### Mathematical Details
  
  The probability density function (pdf) is, with `@` as matrix multiplication,
  
  ```none
  pdf(x; loc, covariance_matrix) = exp(-0.5 y) / Z,
  y = (x - loc)^T @ inv(covariance_matrix) @ (x - loc)
  Z = (2 pi)**(0.5 k) |det(covariance_matrix)|**(0.5).
  ```
  
  where:
  
  * `loc` is a vector in `R^k`,
  * `covariance_matrix` is an `R^{k x k}` symmetric positive definite matrix,
  * `Z` denotes the normalization constant.
  
  Additional leading dimensions (if any) in `loc` and `covariance_matrix` allow
  for batch dimensions.
  
  The MultivariateNormal distribution is a member of the [location-scale
  family](https://en.wikipedia.org/wiki/Location-scale_family), i.e., it can be
  constructed e.g. as,
  
  ```none
  X ~ MultivariateNormal(loc=0, scale=1)   # Identity scale, zero shift.
  scale = Cholesky(covariance_matrix)
  Y = scale @ X + loc
  ```
  
  #### Examples
  
  ```python
  tfd = tfp.distributions
  
  # Initialize a single 3-variate Gaussian.
  mu = [1., 2, 3]
  cov = [[ 0.36,  0.12,  0.06],
         [ 0.12,  0.29, -0.13],
         [ 0.06, -0.13,  0.26]]
  mvn = tfd.MultivariateNormalFullCovariance(
      loc=mu,
      covariance_matrix=cov)
  
  mvn.mean()
  # ==> [1., 2, 3]
  
  # Covariance agrees with covariance_matrix.
  mvn.covariance()
  # ==> [[ 0.36,  0.12,  0.06],
  #      [ 0.12,  0.29, -0.13],
  #      [ 0.06, -0.13,  0.26]]
  
  # Compute the pdf of an observation in `R^3` ; return a scalar.
  mvn.prob([-1., 0, 1])  # shape: []
  
  # Initialize a 2-batch of 3-variate Gaussians.
  mu = [[1., 2, 3],
        [11, 22, 33]]              # shape: [2, 3]
  covariance_matrix = ...  # shape: [2, 3, 3], symmetric, positive definite.
  mvn = tfd.MultivariateNormalFullCovariance(
      loc=mu,
      covariance_matrix=covariance_matrix)
  
  # Compute the pdf of two `R^3` observations; return a length-2 vector.
  x = [[-0.9, 0, 0.1],
       [-10, 0, 9]]     # shape: [2, 3]
  mvn.prob(x)    # shape: [2]
  
  ```
class_docstr_tok: ["The","multivariate","normal","distribution","on","`","R^k","`",".","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","k","`","`","covariance_matrix","`","matrices","that","are","the","covariance",".","This","is","different","than","the","other","multivariate","normals",",","which","are","parameterized","by","a","matrix","more","akin","to","the","standard","deviation",".","#","#","#","#","Mathematical","Details","The","probability","density","function","(","pdf",")","is",",","with","`","@","`","as","matrix","multiplication",",","``","`","none","pdf","(","x",";","loc",",","covariance_matrix",")","=","exp","(","-0.5","y",")","\/","Z",",","y","=","(","x","-","loc",")","^T","@","inv","(","covariance_matrix",")","@","(","x","-","loc",")","Z","=","(","2","pi",")","*","*","(","0.5","k",")","|det","(","covariance_matrix",")","|","*","*","(","0.5",")",".","``","`","where",":","*","`","loc","`","is","a","vector","in","`","R^k","`",",","*","`","covariance_matrix","`","is","an","`","R^","{","k","x","k","}","`","symmetric","positive","definite","matrix",",","*","`","Z","`","denotes","the","normalization","constant",".","Additional","leading","dimensions","(","if","any",")","in","`","loc","`","and","`","covariance_matrix","`","allow","for","batch","dimensions",".","The","MultivariateNormal","distribution","is","a","member","of","the","[","location-scale","family","]","(","https",":","\/\/en.wikipedia.org\/wiki\/Location-scale_family",")",",","i.e.",",","it","can","be","constructed","e.g",".","as",",","``","`","none","X","~","MultivariateNormal","(","loc=0",",","scale=1",")","#","Identity","scale",",","zero","shift",".","scale","=","Cholesky","(","covariance_matrix",")","Y","=","scale","@","X","+","loc","``","`","#","#","#","#","Examples","``","`","python","tfd","=","tfp.distributions","#","Initialize","a","single","3-variate","Gaussian",".","mu","=","[","1.",",","2",",","3","]","cov","=","[","[","0.36",",","0.12",",","0.06","]",",","[","0.12",",","0.29",",","-0.13","]",",","[","0.06",",","-0.13",",","0.26","]","]","mvn","=","tfd.MultivariateNormalFullCovariance","(","loc=mu",",","covariance_matrix=cov",")","mvn.mean","(",")","#","==",">","[","1.",",","2",",","3","]","#","Covariance","agrees","with","covariance_matrix",".","mvn.covariance","(",")","#","==",">","[","[","0.36",",","0.12",",","0.06","]",",","#","[","0.12",",","0.29",",","-0.13","]",",","#","[","0.06",",","-0.13",",","0.26","]","]","#","Compute","the","pdf","of","an","observation","in","`","R^3","`",";","return","a","scalar",".","mvn.prob","(","[","-1.",",","0",",","1","]",")","#","shape",":","[","]","#","Initialize","a","2-batch","of","3-variate","Gaussians",".","mu","=","[","[","1.",",","2",",","3","]",",","[","11",",","22",",","33","]","]","#","shape",":","[","2",",","3","]","covariance_matrix","=","...","#","shape",":","[","2",",","3",",","3","]",",","symmetric",",","positive","definite",".","mvn","=","tfd.MultivariateNormalFullCovariance","(","loc=mu",",","covariance_matrix=covariance_matrix",")","#","Compute","the","pdf","of","two","`","R^3","`","observations",";","return","a","length-2","vector",".","x","=","[","[","-0.9",",","0",",","0.1","]",",","[","-10",",","0",",","9","]","]","#","shape",":","[","2",",","3","]","mvn.prob","(","x",")","#","shape",":","[","2","]","``","`"]
code: def _parameter_properties(cls, dtype, num_classes=None):
      # pylint: disable=g-long-lambda
      return dict(
          loc=parameter_properties.ParameterProperties(event_ndims=1),
          covariance_matrix=parameter_properties.ParameterProperties(
              event_ndims=2,
              shape_fn=lambda sample_shape: ps.concat(
                  [sample_shape, sample_shape[-1:]], axis=0
              ),
              default_constraining_bijector_fn=(
                  lambda: chain_bijector.Chain(
                      [
                          cholesky_outer_product_bijector.CholeskyOuterProduct(),
                          fill_scale_tril_bijector.FillScaleTriL(
                              diag_shift=dtype_util.eps(dtype)
                          ),
                      ]
                  )
              ),
          ),
      )
  
file_path: probability/tensorflow_probability/python/distributions/mvn_full_covariance.py
imports: import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import chain
  from tensorflow_probability.python.bijectors import cholesky_outer_product
  from tensorflow_probability.python.bijectors import fill_scale_tril
  from tensorflow_probability.python.distributions import mvn_tril
  from tensorflow_probability.python.internal import assert_util
  from tensorflow_probability.python.internal import distribution_util
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import parameter_properties
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.stats import sample_stats
  from tensorflow.python.util import deprecation
label_desc: Use image node_id 3 for calling the MultivariateNormalFullCovariance obj's underlying member method code with example usage: obj._parameter_properties(cls, dtype, num_classes) and returns: dict