Tensorflow:正态分发广播

时间:2016-10-02 21:14:24

标签: tensorflow

我定义了两个正态分布的批次:

dist = tf.contrib.distributions.Normal(mu=[1., 2.], sigma=10.)

然后我想在每个点[0.,1。,2.,3]上评估每个分布的pdf。不幸的是

dist.pdf([0.0, 1.0, 2.0, 3.0])

发生错误:

ValueError: Dimensions must be equal, but are 4 and 2

如何以简单的方式评估它并将形状(2,4)作为输出?

1 个答案:

答案 0 :(得分:0)

当您运行dist.prob([0.0, 1.0, 2.0, 3.0]) tensorflow尝试以不同的正态分布评估列表中每个条目的pdf,但您的批次只有两个。解决方案是评估每个值的pdf,然后将张量叠加在一起:

dist = tf.contrib.distributions.Normal(loc=[1., 2.], scale=10.)
tf.stack([dist.prob(m) for m in [0.0, 1.0, 2.0, 3.0]],axis=1)

这产生具有所需形状的张量:

<tf.Tensor 'stack_4:0' shape=(2, 4) dtype=float32>