示例#1
0
def test_edge_type_graph_crf_energy_lp_relaxed():
    # same test as for graph crf above, using single edge type
    crf = EdgeTypeGraphCRF(n_states=2, inference_method="lp", n_edge_types=1)
    for i in xrange(10):
        w_ = np.random.uniform(size=w_sym.shape)
        inf_res, energy_lp = crf.inference((x_1, [g_1]), w_, relaxed=True, return_energy=True)
        assert_almost_equal(energy_lp, -np.dot(w_, crf.psi((x_1, [g_1]), inf_res)))

    # now with fractional solution
    x = np.array([[0, 0], [0, 0], [0, 0]])
    inf_res, energy_lp = crf.inference((x, [g_1]), w_sym, relaxed=True, return_energy=True)
    assert_almost_equal(energy_lp, -np.dot(w_sym, crf.psi((x, [g_1]), inf_res)))
示例#2
0
def test_edge_type_graph_crf_energy_lp_integral():
    # same test as for graph crf above, using single edge type
    crf = EdgeTypeGraphCRF(n_states=2, inference_method="lp", n_edge_types=1)
    inf_res, energy_lp = crf.inference((x_1, [g_1]), w_sym, relaxed=True, return_energy=True)
    # integral solution
    assert_array_almost_equal(np.max(inf_res[0], axis=-1), 1)
    y = np.argmax(inf_res[0], axis=-1)
    # energy and psi check out
    assert_almost_equal(energy_lp, -np.dot(w_sym, crf.psi((x_1, [g_1]), y)))