Пример #1
0
def check_dot3(x, M):
    def g(x):
        return 5 * x**3 + 3 * x

    def f(x):
        return g(dot(M, x))

    dg = g(forward.seed(dot(M, x))).dvalue
    check_general(None, x, f, dot(dg, M))
Пример #2
0
def check_dot2(x, M):
    def g(x):
        return 5 * x**3 + 3 * x

    dg = g(forward.seed(x)).dvalue

    def f(x):
        return dot(M, g(x))

    check_general(None, x, f, dot(M, dg))
Пример #3
0
def test_vector_scalar():
    for x in [-3, 3]:
        for y in [np.ones(0), np.ones(1), np.ones(2), np.linspace(0, 1, 3)]:
            df2d = np.atleast_2d(df(x))
            dv = np.atleast_2d(np.zeros_like(y)).transpose()
            dgxy2d = g(forward.seed(x) * y).dvalue.todense()
            yield check_general, None, x, lambda x: stack(f(x), y), csr_matrix(np.vstack((df2d, dv)))
            yield check_general, None, x, lambda x: stack(y, f(x)), csr_matrix(np.vstack((dv, df2d)))
            yield check_general, None, x, lambda x: stack(f(x), g(x * y)), csr_matrix(np.vstack((df2d, dgxy2d)))
            yield check_general, None, x, lambda x: stack(g(x * y), f(x)), csr_matrix(np.vstack((dgxy2d, df2d)))
Пример #4
0
def test_vector_scalar(x, y):
    df2d = np.atleast_2d(df(x))
    dv = np.atleast_2d(np.zeros_like(y)).transpose()
    dgxy2d = g(forward.seed(x) * y).dvalue.toarray()
    check_general(x, lambda x: stack(f(x), y), csr_matrix(np.vstack(
        (df2d, dv))))
    check_general(x, lambda x: stack(y, f(x)), csr_matrix(np.vstack(
        (dv, df2d))))
    check_general(x, lambda x: stack(f(x), g(x * y)),
                  csr_matrix(np.vstack((df2d, dgxy2d))))
    check_general(x, lambda x: stack(g(x * y), f(x)),
                  csr_matrix(np.vstack((dgxy2d, df2d))))
Пример #5
0
def test_sparsesum():
    idx, v = sparsesum(10, [(0, 1), (0, 1), (3, -1)], return_sparse=True)
    assert (idx == np.asarray([0, 3])).all()
    assert (v == np.asarray([2., -1.])).all()

    x = forward.seed(np.linspace(0, 1, 11))
    idx, d = sparsesum(
        20, [(np.arange(11), x), (np.arange(11), x)], return_sparse=True)
    assert (idx == np.arange(11)).all()
    assert (d.gradient.diagonal() == 2.).all()

    d = sparsesum(1, [(np.zeros(2, dtype=int), np.ones(2)),
                      (np.zeros(1, dtype=int), np.ones(1))])
    assert d == 3
Пример #6
0
def check_general(msg, x, f, grad):
    y = f(forward.seed(x))
    dy = grad
    assert_almost_equal(y.value, f(x))
    _check_grad(y.dvalue, dy)
Пример #7
0
def check_vector_scalar(msg, x, v, f, df):
    y = f(forward.seed(x), v)
    assert_almost_equal(y.value, f(x, v))
    assert y.dvalue.shape == (len(y.value), 1)
    assert_almost_equal(np.asarray(y.dvalue.todense()).flatten(), df(x, v))
Пример #8
0
def check_vector(msg, x, f, df):
    y = f(forward.seed(x))
    d = np.atleast_1d(df(x) * np.ones_like(y.value))
    dy = scipy.sparse.spdiags(d, 0, len(d), len(d), format='csr')
    assert_almost_equal(y.value, f(x))
    _check_grad(y.dvalue, dy)
Пример #9
0
def check_scalar(msg, x, f, df):
    y = f(forward.seed(x))
    assert_almost_equal(y.value, f(x))
    assert_almost_equal(y.dvalue, df(x))
Пример #10
0
def test_array_priority():
    x = np.zeros(5)
    g = np.zeros(5)
    assert isinstance(forward.seed(x) * g, forward.value)
    assert isinstance(g * forward.seed(x), forward.value)
Пример #11
0
def check_vector_scalar(x, v, f, df):
    y = f(forward.seed(x), v)
    assert_almost_equal(y.value, f(x, v))
    assert y.dvalue.shape == (len(y.value), 1)
    assert_almost_equal(y.dvalue.toarray().ravel(), df(x, v))
Пример #12
0
def check_scalar(x, f, df):
    y = f(forward.seed(x))
    # Direct comparison is avoided to avoid problem if  x+0.j != x-0.j
    assert_equal(y.value - f(x), 0)
    deriv = df(x)
    assert_almost_equal(y.dvalue, deriv)