Beispiel #1
0
def test_expand_packed_triangular():
    with pytest.raises(ValueError):
        x = tt.matrix('x')
        x.tag.test_value = np.array([[1.]])
        expand_packed_triangular(5, x)
    N = 5
    packed = tt.vector('packed')
    packed.tag.test_value = floatX(np.zeros(N * (N + 1) // 2))
    with pytest.raises(TypeError):
        expand_packed_triangular(packed.shape[0], packed)
    np.random.seed(42)
    vals = np.random.randn(N, N)
    lower = floatX(np.tril(vals))
    lower_packed = floatX(vals[lower != 0])
    upper = floatX(np.triu(vals))
    upper_packed = floatX(vals[upper != 0])
    expand_lower = expand_packed_triangular(N, packed, lower=True)
    expand_upper = expand_packed_triangular(N, packed, lower=False)
    expand_diag_lower = expand_packed_triangular(N,
                                                 packed,
                                                 lower=True,
                                                 diagonal_only=True)
    expand_diag_upper = expand_packed_triangular(N,
                                                 packed,
                                                 lower=False,
                                                 diagonal_only=True)
    assert np.all(expand_lower.eval({packed: lower_packed}) == lower)
    assert np.all(expand_upper.eval({packed: upper_packed}) == upper)
    assert np.all(
        expand_diag_lower.eval({packed: lower_packed}) == floatX(np.diag(
            vals)))
    assert np.all(
        expand_diag_upper.eval({packed: upper_packed}) == floatX(np.diag(
            vals)))
Beispiel #2
0
def test_expand_packed_triangular():
    with pytest.raises(ValueError):
        x = tt.matrix('x')
        x.tag.test_value = np.array([[1.]])
        expand_packed_triangular(5, x)
    N = 5
    packed = tt.vector('packed')
    packed.tag.test_value = floatX(np.zeros(N * (N + 1) // 2))
    with pytest.raises(TypeError):
        expand_packed_triangular(packed.shape[0], packed)
    np.random.seed(42)
    vals = np.random.randn(N, N)
    lower = floatX(np.tril(vals))
    lower_packed = floatX(vals[lower != 0])
    upper = floatX(np.triu(vals))
    upper_packed = floatX(vals[upper != 0])
    expand_lower = expand_packed_triangular(N, packed, lower=True)
    expand_upper = expand_packed_triangular(N, packed, lower=False)
    expand_diag_lower = expand_packed_triangular(N, packed, lower=True, diagonal_only=True)
    expand_diag_upper = expand_packed_triangular(N, packed, lower=False, diagonal_only=True)
    assert np.all(expand_lower.eval({packed: lower_packed}) == lower)
    assert np.all(expand_upper.eval({packed: upper_packed}) == upper)
    assert np.all(expand_diag_lower.eval({packed: lower_packed}) == floatX(np.diag(vals)))
    assert np.all(expand_diag_upper.eval({packed: upper_packed}) == floatX(np.diag(vals)))