Пример #1
0
def test_grad_finite_diff_2():
    # f(x, y) = x^3 + y^2
    func = lambda x: x[0]**3 + x[1]**2
    x = np.array([2.0, 3.0])
    eps = 1e-5
    g = oracles.grad_finite_diff(func, x, eps)
    ok_(isinstance(g, np.ndarray))
    ok_(np.allclose(g, [12.0, 6.0], atol=1e-4))
Пример #2
0
def test_grad_finite_diff_1():
    # Quadratic function.
    A = np.eye(3)
    b = np.array([1, 2, 3])
    quadratic = oracles.QuadraticOracle(A, b)
    g = oracles.grad_finite_diff(quadratic.func, np.zeros(3))
    ok_(isinstance(g, np.ndarray))
    ok_(np.allclose(g, -b))
Пример #3
0
def main():
    A = np.random.uniform(0, 10, (5, 5))
    b = np.random.uniform(0, 10, 5)
    regcoef = np.random.uniform(0, 10, 1)
    oracle = oracles.create_log_reg_oracle(A, b, regcoef)
    print(A)
    print(b)
    print(regcoef)
    for i in range(10):
        x = np.random.uniform(0, 10, 5)
        grad_oracle = oracle.grad(x)
        hess_oracle = oracle.hess(x)
        grad_finite = oracles.grad_finite_diff(oracle.func, x)
        hess_finite = oracles.hess_finite_diff(oracle.func, x)
        diff_grad = np.abs(grad_finite - grad_oracle)
        diff_hess = np.abs(hess_finite - hess_oracle)
        #print(i)
        #print(grad_oracle)
        #print(grad_finite)
        print(np.max(diff_hess))
Пример #4
0
from nose.tools import assert_almost_equal, ok_, eq_

import numpy as np
import numpy.linalg as li
import scipy.sparse as sp

# ----------------------- Checking grad and hess

A = np.random.rand(10, 4)
b = np.random.rand(10)
tr = oracles.create_log_reg_oracle(A, b, 1)
for i in range(5):
    x = np.random.rand(4)
    ok_(
        np.allclose(tr.grad(x),
                    oracles.grad_finite_diff(tr.func, x),
                    rtol=1e-1,
                    atol=1e-1))

# ---------------------- Experiment 1

for d in ['exp1', 'exp2', 'exp3', 'exp4']:
    if not os.path.exists(d):
        os.makedirs(d)

exps = [{
    "A": np.array([[5, 1], [1, 1]]),
    "b": np.zeros(2),
    "st": "normal"
}, {
    "A": np.array([[25, 2], [2, 1]]),