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))
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))
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))
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]]),