我正在尝试将两个高斯分布相乘以获得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'>.
我很困惑我是做错了方法还是什么?有人可以帮我吗?
答案 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()