Tensorflow中多元正态的CDF

时间:2018-06-22 12:57:28

标签: python tensorflow cdf

我想使用张量流评估多元正态分布的cdf。到目前为止,我已经尝试过:

import tensorflow as tf
ds = tf.contrib.distributions

# Initialize a single 3-variate Gaussian.
mu = [0., 0., 0.]
cov = [[ 0.36,  0.12,  0.06],
       [ 0.12,  0.29, -0.13],
       [ 0.06, -0.13,  0.26]]
mvn = ds.MultivariateNormalFullCovariance(
    loc=mu,
    covariance_matrix=cov)
value = tf.constant([0., 0., 0.])


with tf.Session() as sess:
    print mvn.cdf(value).eval()

这会产生错误:

NotImplementedError: cdf is not implemented when overriding event_shape

我不明白为什么要覆盖event_shape,因为event_shape和值的形状相同。我在做什么错了?

1 个答案:

答案 0 :(得分:0)

您没有做错任何事情。 CDF未针对多元正态实现。 (我同意错误消息令人困惑。错误消息由负责实现TransformedDistribution的{​​{1}}抛出。)

如果您可以忍受蒙特卡洛近似,我建议您执行以下操作:

cdf

(经过深思熟虑,我确定有人可以做得更好。)

这里可能还会描述一个更聪明的解决方案:https://arxiv.org/abs/1603.04166