在Tensorflow中评估转换多变量法线的PDF?

时间:2017-10-17 10:33:16

标签: tensorflow

我正在尝试评估Tensorflow中转换的多变量分布的log pdf。虽然它将正确采样,但它为一个样本产生两个单独的对数概率。示例示例为

[[  1.05516054e-03,   1.50635891e+01]]

将返回日志概率

[[ 2.64074564, -4.21384382]] 

而不是单个对数概率。

为了使这个更清楚,我附上了我希望是一个可重复的例子。

from tensorflow.contrib.distributions.python.ops import bijectors as bijector

ds = tf.contrib.distributions

mean = tf.constant([-5.,  15.])
chol = tf.constant([[0.77909118,  0.],
                [-0.02230092,  0.8150183]])

mvn_sftpls = ds.TransformedDistribution(distribution=ds.MultivariateNormalTriL(
loc=mean, scale_tril=chol), bijector=bijector.Softplus())

sample = mvn_sftpls.sample(1)
output = mvn_sftpls.log_prob(sample)

with tf.Session() as sess:
    print(sess.run(output))

2 个答案:

答案 0 :(得分:1)

对于后验性(以及将来),在Tensorflow的夜间版本中(我猜测下一个版本),这应该是自动推断的,因此您不需要指定event_ndims = 1。

答案 1 :(得分:0)

答案(对于任何好奇的人)是将softplus bijector中的event_ndims设置为多变量范数中适当数量的维度。就我而言:

bijector=bijector.Softplus(event_ndims = 1)