def test_spn_construction_by_init_and_evaluation(): # building the same levels input_layer = build_spn_indicator_layer(vars) sum_layer, prod_layer = build_spn_layers(input_layer) spn = Spn(input_layer=input_layer, layers=[sum_layer, prod_layer]) res = spn.eval(I) print('First evaluation') print(res) assert_log_array_almost_equal(root_vals, res)
def test_spn_construction_by_add_and_evaluation(): spn = Spn() # building the same levels input_layer = build_spn_indicator_layer(vars) sum_layer, prod_layer = build_spn_layers(input_layer) # adding all layers to the spn spn.set_input_layer(input_layer) spn.add_layer(sum_layer) spn.add_layer(prod_layer) res = spn.eval(I) print('First evaluation') print(res) assert_log_array_almost_equal(root_vals, res)
def test_spn_construction_by_add_and_evaluation_II(): spn = Spn() # print('empty spn') # print(spn) input_layer = build_spn_smoothed_layer(vars, dicts, alpha) prod_layer = build_spn_layers_II(input_layer) # adding all layers to the spn spn.set_input_layer(input_layer) spn.add_layer(prod_layer) # print('created spn') # print(spn) res = spn.eval(I) print('First smoothed evaluation') print(res) assert_log_array_almost_equal(root_vals, res)
def test_categorical_smoothed_node_data_smooth(): data_1 = numpy.array([[1], [0], [1], [0], [1]]) data_2 = numpy.array([[1, 0], [0, 1], [1, 1], [0, 1], [1, 0]]) alpha = 0 freqs = CategoricalSmoothedNode.smooth_freq_from_data(data_1, alpha) print('freqs', freqs) exp_freqs = CategoricalSmoothedNode.smooth_ll([2 / 5, 3 / 5], alpha) print('exp freqs', exp_freqs) assert_array_almost_equal(exp_freqs, freqs) # now create a node input_node = CategoricalSmoothedNode(var=0, var_values=2, instances={0, 2, 4}) input_node.smooth_probs(alpha, data=data_1) exp_probs = CategoricalSmoothedNode.smooth_ll([0, 1], alpha) print('exp probs', exp_probs) print('probs', input_node._var_probs) assert_log_array_almost_equal(exp_probs, input_node._var_probs) input_node.smooth_probs(alpha, data=data_2) assert_log_array_almost_equal(exp_probs, input_node._var_probs)