Как мне умножить два распределения Гаусса? - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь умножить два гауссовых распределения, чтобы получить апостериорные значения для данных 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 <dtype: 'float32'>, но ожидался <dtype: 'float64'>.

Я запутался, делаю ли я это неправильно или как? Может кто-нибудь помочь мне с этим?

1 Ответ

0 голосов
/ 15 июля 2018

В этом примере вы используете x в качестве tf.float64. Если вы явно не укажете, tenorflow автоматически преобразует входные данные списка в 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() 
...