Example #1
0
 def collapsed_gibbs(self, wordIds, S, T):
     K = self.K
     V = self.V
     D = self.D
     N = self.N
     latent_vars = {}
     training_data = {}
     qbeta = Empirical(tf.Variable(tf.zeros([S, K, V]) + 0.01))
     latent_vars[self.beta] = qbeta
     qtheta = [None] * D
     qz = [None] * D
     for d in range(D):
         qtheta[d] = Empirical(tf.Variable(tf.zeros([S, K]) + 0.1))
         latent_vars[self.theta[d]] = qtheta[d]
         qz[d] = Empirical(tf.Variable(tf.zeros([S, N[d]], dtype=tf.int32)))
         latent_vars[self.z[d]] = qz[d]
         training_data[self.w[d]] = wordIds[d]
     self.latent_vars = latent_vars
     proposal_vars = {}
     proposal_vars[self.beta] = ed.complete_conditional(self.beta)
     cond_set = set(self.w + self.z)
     for d in range(D):
         proposal_vars[self.theta[d]] = \
             ed.complete_conditional(self.theta[d])
         proposal_vars[self.z[d]] = \
             ed.complete_conditional(self.z[d], cond_set)
     self.inference = ed.Gibbs(latent_vars, proposal_vars, training_data)
     print("collapsed gibbs setup finished")
     self.inference.initialize(n_iter=T, n_print=1)
     print("initialize finished")
     self.__run_inference__(T)
     self.qbeta_sample = qbeta.eval()
Example #2
0
 def gibbs(self, wordIds, S, T):
     K = self.K
     V = self.V
     D = self.D
     N = self.N
     latent_vars = {}
     training_data = {}
     qbeta = Empirical(tf.Variable(tf.zeros([S, K, V]) + 0.01))
     latent_vars[self.beta] = qbeta
     qtheta = [None] * D
     qz = [None] * D
     for d in range(D):
         qtheta[d] = Empirical(tf.Variable(tf.zeros([S, K]) + 0.1))
         latent_vars[self.theta[d]] = qtheta[d]
         qz[d] = Empirical(tf.Variable(tf.zeros([S, N[d]], dtype=tf.int32)))
         latent_vars[self.z[d]] = qz[d]
         training_data[self.w[d]] = wordIds[d]
     self.latent_vars = latent_vars
     self.inference = ed.Gibbs(latent_vars, data=training_data)
     print("gibbs setup finished")
     self.inference.initialize(n_iter=T, n_print=1)
     self.__run_inference__(T)
     self.qbeta_sample = qbeta.eval()