コード例 #1
0
def test_matrix_inner(fn):
    [xarr, yarr], [x, y] = noise_elements(fn, 2)
    sparse_mat = _sparse_matrix(fn)
    sparse_mat_as_dense = np.asarray(sparse_mat.todense())
    dense_mat = _dense_matrix(fn)

    true_inner_sparse = np.vdot(yarr, np.dot(sparse_mat_as_dense, xarr))
    true_inner_dense = np.vdot(yarr, np.dot(dense_mat, xarr))

    w_sparse = NumpyFnMatrixWeighting(sparse_mat)
    w_dense = NumpyFnMatrixWeighting(dense_mat)
    assert almost_equal(w_sparse.inner(x, y), true_inner_sparse)
    assert almost_equal(w_dense.inner(x, y), true_inner_dense)

    # With free functions
    w_sparse_inner = npy_weighted_inner(sparse_mat)
    w_dense_inner = npy_weighted_inner(dense_mat)
    assert almost_equal(w_sparse_inner(x, y), true_inner_sparse)
    assert almost_equal(w_dense_inner(x, y), true_inner_dense)

    # Exponent != 2 -> no inner
    w_dense = NumpyFnMatrixWeighting(dense_mat, exponent=1)
    with pytest.raises(NotImplementedError):
        w_dense.inner(x, y)
コード例 #2
0
def test_array_inner(fn):
    [xarr, yarr], [x, y] = noise_elements(fn, 2)

    weight_arr = _pos_array(fn)
    weighting_arr = NumpyFnArrayWeighting(weight_arr)

    true_inner = np.vdot(yarr, xarr * weight_arr)

    assert almost_equal(weighting_arr.inner(x, y), true_inner)

    # With free function
    inner_vec = npy_weighted_inner(weight_arr)

    assert almost_equal(inner_vec(x, y), true_inner)

    # Exponent != 2 -> no inner product, should raise
    with pytest.raises(NotImplementedError):
        NumpyFnArrayWeighting(weight_arr, exponent=1.0).inner(x, y)