python - Tensorflow 中多元正态分布的 CDF

标签 python tensorflow cdf

我想使用 tensorflow 评估多元正态分布的 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 和 value 的形状是相同的。我做错了什么?

最佳答案

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

如果您可以容忍蒙特卡洛近似,我建议这样做:

def approx_multivariate_cdf(dist, bound, num_samples=int(100e3), seed=None):
  s = dist.sample(num_samples, seed=seed)
  in_box = tf.cast(tf.reduce_all(s <= bound, axis=-1), dist.dtype)
  return tf.reduce_mean(in_box, axis=0)

(经过一番思考,我相信有人可以做得更好。)

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

关于python - Tensorflow 中多元正态分布的 CDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50988462/

相关文章:

python - Azure get_blob 仅返回 4KB 的图像大小

r - 使用自定义函数在 R 中绘制 CDF 和 PDF

image-processing - Tensorflow:我的损失函数产生巨大的数字

python - scikit learn-如何获得高斯混合模型的 cdf?

python - 50% 处的 CDF x 值和平均值不显示相同的数字

python - CDF、matplotlib - 绘图、python 的颜色不足

python - 如何使用 python (suds) 对 XML 进行签名

python - Pelican 3.3 pelican-quickstart 错误 "ValueError: unknown locale: UTF-8"

python - 与 tensorflow-gpu 1.4 一起使用的 keras 版本

python - tf.image.decode_jpeg - 内容必须是标量,具有形状 [1]