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

时间:2018-07-04 21:42:05

标签: python tensorflow tensorflow-probability

我正在尝试将两个高斯分布相乘以获得GMM数据的后验。为此,我尝试使用.prob()中的tf.contrib.distributions.MultivariateNormalDiag函数,但是每次遇到相同错误时,即使我为参数提供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() 
  

TypeError:输入的类型为<dtype: 'float32'>,但预期为<dtype: 'float64'>.

我很困惑我是做错了方法还是什么?有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

在此示例中,您将x用作tf.float64。除非您明确指定,否则tensorflow会将列表输入自动转换为tf.float32。您想要做类似的事情(不是可执行代码,但表明您需要向float64发出信号):

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()