Python 如何将两个高斯分布相乘?

Python 如何将两个高斯分布相乘?,python,tensorflow,tensorflow-probability,Python,Tensorflow,Tensorflow Probability,我试图将两个高斯分布相乘,以获得GMM数据的后验分布。为了做到这一点,我尝试使用tf.contrib.distributions.multivarianentormaldiag中的.prob()函数,但每次都会出现相同的错误,即使我使用float64提供参数 我使用的是TensorFlow 1.8版本 x = tf.placeholder(tf.float64, [None,2], name="input") likelihood = tf.contrib.distributions.Multi

我试图将两个高斯分布相乘,以获得GMM数据的后验分布。为了做到这一点,我尝试使用
tf.contrib.distributions.multivarianentormaldiag
中的
.prob()
函数,但每次都会出现相同的错误,即使我使用
float64
提供参数

我使用的是TensorFlow 1.8版本

x = tf.placeholder(tf.float64, [None,2], name="input")
likelihood = tf.contrib.distributions.MultivariateNormalDiag(loc = [0., 0., 0.], scale_diag= [1., 1., 1.])

y_LL = likelihood.prob(x).eval() 
类型错误:输入的数据类型为
,但应为


我不知道我是用错误的方式做的,还是什么?有人能帮我吗?

在这个例子中,您使用x作为tf.float64。除非您明确指定,否则tensorflow将自动将列表输入转换为tf.float32。您希望执行以下操作(不是可执行代码,而是演示您需要向float64发送信号):


您能提供给我们吗?在调用
eval
时,您似乎没有向占位符中输入任何内容。你能给我们看更多你的代码吗?
import numpy as np
likelihood = tf.contrib.distributions.MultivariateNormalDiag(loc=np.float64([0., 0., 0.]), scale_diag=np.float64([1., 1., 1.]))
y_LL = likelihood.prob(x).eval()