Covariance is (possibly) defined only for non-scalar-event distributions.
For example, for a length-k, vector-valued distribution, it is calculated as,
`Cov[i, j] = Covariance(X_i, X_j) = E[(X_i - E[X_i]) (X_j - E[X_j])]`

where Cov is a (batch of) k x k matrix, 0 <= (i, j) < k, and E denotes expectation.

tfd_covariance(distribution, ...)

distribution | The distribution being used. |
---|---|

... | Additional parameters passed to Python. |

Floating-point Tensor with shape `[B1, ..., Bn, k, k]`

where the first n dimensions
are batch coordinates and `k = reduce_prod(self.event_shape)`

.

Alternatively, for non-vector, multivariate distributions (e.g., matrix-valued, Wishart),
Covariance shall return a (batch of) matrices under some vectorization of the events, i.e.,
`Cov[i, j] = Covariance(Vec(X)_i, Vec(X)_j) = [as above]`

where Cov is a (batch of) k x k matrices, 0 <= (i, j) < k = reduce_prod(event_shape),
and Vec is some function mapping indices of this distribution's event dimensions to indices of a
length-k vector.

Other distribution_methods:
`tfd_cdf()`

,
`tfd_cross_entropy()`

,
`tfd_entropy()`

,
`tfd_kl_divergence()`

,
`tfd_log_cdf()`

,
`tfd_log_prob()`

,
`tfd_log_survival_function()`

,
`tfd_mean()`

,
`tfd_mode()`

,
`tfd_prob()`

,
`tfd_quantile()`

,
`tfd_sample()`

,
`tfd_stddev()`

,
`tfd_survival_function()`

,
`tfd_variance()`

#> tf.Tensor([1. 0.25], shape=(2,), dtype=float32)# }