Dear Edward users,
It is my intention to do inference in a mixture of different distributions, K Gaussians and one Uniform, in 3D.
So, first of all, I’ve tried to reproduce the examples which have some similarities with my problem. I’ve reproduced successfully the mixutre_gaussian_mh.py example within Github repository. But, I wonder why changing line 53
x = Normal(loc=tf.gather(mu, c), scale=tf.gather(sigma, c))
by
components = [
MultivariateNormalDiag(tf.ones([N,1])*mu[k], tf.ones([N,1])*sigma[k])
for k in range(K)]
x = Mixture(cat=c, components=components)
Which I think is more convenient to define my problem, Inference does not initialize. Please, any help will be welcome!
>>> inference.initialize()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/angel/src/edward/edward/inferences/monte_carlo.py", line 98, in initialize
self.train = self.build_update()
File "/home/angel/src/edward/edward/inferences/metropolis_hastings.py", line 127, in build_update
x_znew = copy(x, dict_swap_new, scope=scope_new)
File "/home/angel/src/edward/edward/util/random_variables.py", line 232, in copy
new_rv = type(rv)(*args, **kwargs)
File "/home/angel/src/edward/edward/models/random_variable.py", line 95, in __init__
super(RandomVariable, self).__init__(*args, **kwargs)
File "/home/angel/anaconda2/envs/tensorflow/lib/python2.7/site-packages/tensorflow/contrib/distributions/python/ops/mixture.py", line 94, in __init__
cat)
TypeError: cat must be a Categorical distribution, but saw: Tensor("inference_139892168415760/old/Categorical_1/sample/Reshape_1:0", shape=(500,), dtype=int32)