Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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)