2016-10-02 84 views
0

我定义批处理两个正态分布的:Tensorflow:正态分布广播

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

然后我想evalutate每个上的每个点[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

当您运行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>