我定义了两个正态分布的批次:
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)作为输出?
答案 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>