Example #1
0
def test_local_update(N, beta, family):
    M = beta.shape[0]
    X = np.random.random((N, M))
    y = np.random.random(N) > 0.4
    u = np.zeros(M)
    z = np.random.random(M)
    rho = 1e7

    def create_local_gradient(func):
        def wrapped(beta, X, y, z, u, rho):
            return func(beta, X, y) + rho * (beta - z + u)

        return wrapped

    def create_local_f(func):
        def wrapped(beta, X, y, z, u, rho):
            return func(beta, X,
                        y) + (rho / 2) * np.dot(beta - z + u, beta - z + u)

        return wrapped

    f = create_local_f(family.pointwise_loss)
    fprime = create_local_gradient(family.pointwise_gradient)

    result = local_update(X, y, beta, z, u, rho, f=f, fprime=fprime)

    assert np.allclose(result, z, atol=2e-3)
Example #2
0
def test_local_update(N, beta):
    M = beta.shape[0]
    X = np.random.random((N, M))
    y = np.random.random(N) > 0.4
    u = np.zeros(M)
    z = np.random.random(M)
    rho = 1e6

    result = local_update(X, y, beta, z, u, rho)

    assert np.allclose(result, z, atol=2e-3)