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)
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)
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)