Exemplo n.º 1
0
def test_categorical_smoothed_node_create_and_eval():

    for alpha in alphas:
        for i, var in enumerate(vars):
            var_freq = freqs[i]
            smo = CategoricalSmoothedNode(i, var, alpha, var_freq)
            smo.eval(obs)
            print('smo values')
            print(smo.log_val)
            ll = compute_smoothed_ll(obs[i], var_freq, var, alpha)
            print('log values')
            print(ll)
            assert_almost_equal(ll, smo.log_val, 15)
Exemplo n.º 2
0
def test_categorical_smoothed_node_create_and_eval_keras():

    alpha = 0.0

    data = numpy.array([[1, 1, 1, 0],
                        [0, 0, 1, 0],
                        [0, 0, 1, 0],
                        [1, 0, 0, 0],
                        [1, 0, 1, 0],
                        [0, 1, 1, 0],
                        [MARG_IND, 0, 0, 1],
                        [MARG_IND, MARG_IND, MARG_IND, MARG_IND]]).astype(numpy.int32)

    input = K.placeholder(ndim=2, dtype='int32')

    for i, var in enumerate(vars):

        log_vals = []
        var_freq = freqs[i]
        smo = CategoricalSmoothedNode(i, var, alpha, var_freq)

        smo.build_k(input)

        for d in data:
            smo.eval(d)
            log_vals.append(smo.log_val)
            print('smo values')
            print(smo.log_val)

        eval_input_node_f = K.function([input], [smo.log_vals])
        keras_log_vals = eval_input_node_f([data])[0]
        print('keras vals')
        print(keras_log_vals)

        assert_array_almost_equal(numpy.array(log_vals)[:, numpy.newaxis],
                                  keras_log_vals,
                                  decimal=4)
Exemplo n.º 3
0
def test_categorical_smoothed_node_resmooth():
    for i, var in enumerate(vars):
        alpha = alphas[0]
        var_freq = freqs[i]
        smo = CategoricalSmoothedNode(i, var, alpha, var_freq)
        smo.eval(obs[i])
        print('smo values')
        print(smo.log_val)
        # checking the right value
        ll = compute_smoothed_ll(obs[i], var_freq, var, alpha)
        print('log values')
        print(ll)
        assert_almost_equal(ll, smo.log_val, 15)
        # now setting another alpha
        print('Changing smooth level')
        for alpha_new in alphas:
            smo.smooth_probs(alpha_new)
            smo.eval(obs[i])
            print('smo values')
            print(smo.log_val)
            ll = compute_smoothed_ll(obs[i], var_freq, var, alpha_new)
            print('log values')
            print(ll)
            assert_almost_equal(ll, smo.log_val, 15)