def test_xnes_quadratic(): obj = Quadratic() opt = Xnes(obj.pars, obj.f) for i, info in enumerate(opt): if i > 5000: break assert obj.solved(), 'did not find solution'
def test_asgd_quadratic(): obj = Quadratic() opt = Asgd(obj.pars, obj.fprime, eta0=0.01, lmbd=0.2, t0=0.01) for i, info in enumerate(opt): if i > 10000: break assert obj.solved(0.1), 'did not find solution'
def test_gd_quadratic(): obj = Quadratic() opt = GradientDescent(obj.pars, obj.fprime, step_rate=0.01, momentum=.9) for i, info in enumerate(opt): if i > 500: break assert obj.solved(), 'did not find solution'
def test_lbfgs_quadratic(): obj = Quadratic() opt = Lbfgs(obj.pars, obj.f, obj.fprime) for i, info in enumerate(opt): if i > 50: break assert obj.solved(), 'did not find solution'
def test_ncg_quadratic(): obj = Quadratic() opt = NonlinearConjugateGradient(obj.pars, obj.f, obj.fprime) for i, info in enumerate(opt): if i > 50: break assert obj.solved(), 'did not find solution'
def test_bfgs_quadratic(): obj = Quadratic() opt = Bfgs(obj.pars, obj.f, obj.fprime) for i, info in enumerate(opt): if i > 50: break assert obj.solved(), 'did not find solution'
def test_cg_explicit_hessian(): obj = Quadratic() opt = ConjugateGradient(obj.pars, obj.H, obj.b) for i, info in enumerate(opt): if i > 10: break assert obj.solved()
def test_xnes_quadratic(): obj = Quadratic() opt = Xnes(obj.pars, obj.f) for i, info in enumerate(opt): if i > 5000: break assert obj.solved(), "did not find solution"
def test_nesterov_quadratic(): obj = Quadratic() opt = Nesterov(obj.pars, obj.fprime, steprate=0.01) for i, info in enumerate(opt): if i > 750: break assert obj.solved(), 'did not find solution'
def test_cg_preconditioning(): obj = Quadratic() precond = np.array([[1,0], [0, 1e-2]]) opt = ConjugateGradient(obj.pars, obj.H, obj.b, precond=precond) for i, info in enumerate(opt): if i > 10: break assert obj.solved()
def test_rprop_quadratic(): obj = Quadratic() opt = Rprop(obj.pars, obj.f, obj.fprime, step_shrink=0.1, step_grow=1.2, min_step=1e-6, max_step=0.1) for i, info in enumerate(opt): if i > 500: break assert obj.solved(), 'did not find solution'
def test_gd_quadratic(): obj = Quadratic() opt = GradientDescent( obj.pars, obj.fprime, step_rate=0.01, momentum=.9) for i, info in enumerate(opt): if i > 500: break assert obj.solved(), 'did not find solution'
def test_cg_implicit_hessian(): obj = Quadratic() def f_Hp(p): return obj.f_Hp(obj.pars, p) opt = ConjugateGradient(obj.pars, f_Hp=f_Hp, b=obj.b) for i, info in enumerate(opt): if i > 10: break assert obj.solved()
def test_smd_quadratic(): obj = Quadratic() # TODO: I don't know why these parameters work, but they do. opt = Smd(obj.pars, obj.f, obj.fprime, obj.f_Hp, eta0=1e-1, mu=2e-4, lmbd=.5) for i, info in enumerate(opt): print obj.pars if i > 100: break assert obj.solved(), 'did not find solution'
def test_rprop_quadratic(): obj = Quadratic() opt = Rprop(obj.pars, obj.fprime, step_shrink=0.1, step_grow=1.2, min_step=1e-6, max_step=0.1) for i, info in enumerate(opt): if i > 500: break assert obj.solved(), 'did not find solution'