

def test_edge_feature_latent_node_crf_no_latent():
    (X, Y) = generate_blocks_multinomial(noise=2, n_samples=1, seed=1, size_x=8)
    (x, y) = (X[0], Y[0])
    n_states = x.shape[(- 1)]
    edge_list = make_grid_edges(x, 4, return_lists=True)
    edges = np.vstack(edge_list)
    pw_horz = ((- 1) * np.eye((n_states + 5)))
    (xx, yy) = np.indices(pw_horz.shape)
    res[(xx > yy)] = 1
    pw_vert = ((- 1) * np.eye((n_states + 5)))
    pw_vert[(xx != yy)] = 1
    pw_vert *= 10
    edge_weights_horizontal = np.repeat(pw_horz[np.newaxis, :, :], edge_list[0].shape[0], axis=0)
    edge_weights_vertical = np.repeat(pw_vert[np.newaxis, :, :], edge_list[1].shape[0], axis=0)
    edge_weights = np.vstack([edge_weights_horizontal, edge_weights_vertical])
    x_padded = ((- 100) * np.ones((x.shape[0], x.shape[1], (x.shape[2] + 5))))
    x_padded[:, :, :x.shape[2]] = x
    res = lp_general_graph((- x_padded.reshape((- 1), (n_states + 5))), edges, edge_weights)
    edge_features = edge_list_to_features(edge_list)
    x = (x.reshape((- 1), n_states), edges, edge_features, 0)
    y = y.ravel()
    for inference_method in get_installed(['lp']):
        crf = EdgeFeatureLatentNodeCRF(n_labels=3, inference_method=inference_method, n_edge_features=2, n_hidden_states=5)
        w = np.hstack([np.eye(3).ravel(), (- pw_horz.ravel()), (- pw_vert.ravel())])
        y_pred = crf.inference(x, w, relaxed=True)
        assert_array_almost_equal(res[0], y_pred[0].reshape((- 1), (n_states + 5)), 4)
        assert_array_almost_equal(res[1], y_pred[1], 4)
        assert_array_equal(y, np.argmax(y_pred[0], axis=(- 1)))
    for inference_method in get_installed(['qpbo', 'ad3', 'lp'])[:2]:
        crf = EdgeFeatureLatentNodeCRF(n_labels=3, inference_method=inference_method, n_edge_features=2, n_hidden_states=5)
        w = np.hstack([np.eye(3).ravel(), (- pw_horz.ravel()), (- pw_vert.ravel())])
        y_pred = crf.inference(x, w, relaxed=False)
        assert_array_equal(y, y_pred)

dataset/ETHPy150Open pystruct/pystruct/pystruct/tests/test_models/test_latent_node_crf.py test_edge_feature_latent_node_crf_no_latent/VarMisuse@121/153 `pw_horz`->`res`