def _test_log_prob_zi(n_minibatch, num_factors, K): multinomial = Multinomial(num_factors, K) multinomial.pi = tf.constant(1.0/K, shape=[num_factors, K]) with sess.as_default(): pi = multinomial.pi.eval() z = np.zeros((n_minibatch, K*num_factors)) for i in xrange(num_factors): z[:, (i*K):((i+1)*K)] = np.random.multinomial(1, pi[i, :], size=n_minibatch) z_tf = tf.constant(z, dtype=tf.float32) for i in xrange(num_factors): # NOTE: since Tensorflow has no special functions, the values here are # only an approximation assert np.allclose( multinomial.log_prob_zi(i, z_tf).eval(), multinomial_logpmf_vec(z[:, (i*K):((i+1)*K)], 1, pi[i, :]), atol=1e-4)
def _test_log_prob_zi(n_minibatch, num_factors, K): multinomial = Multinomial(num_factors, K) multinomial.pi = tf.constant(1.0 / K, shape=[num_factors, K]) with sess.as_default(): pi = multinomial.pi.eval() z = np.zeros((n_minibatch, K * num_factors)) for i in range(num_factors): z[:, (i * K):((i + 1) * K)] = np.random.multinomial(1, pi[i, :], size=n_minibatch) z_tf = tf.constant(z, dtype=tf.float32) for i in range(num_factors): # NOTE: since Tensorflow has no special functions, the values here are # only an approximation assert np.allclose(multinomial.log_prob_zi(i, z_tf).eval(), multinomial_logpmf_vec( z[:, (i * K):((i + 1) * K)], 1, pi[i, :]), atol=1e-4)