def test_structured_params(make_quadratic): a, b, c, data, _ = make_quadratic w0 = [np.random.randn(2), np.random.randn(1)[0]] nmin = structured_minimizer(minimize) res = nmin(qobj_struc, w0, args=(data,), jac=True, bounds=None, method='L-BFGS-B') (Ea_bfgs, Eb_bfgs), Ec_bfgs = res['x'] assert np.allclose((Ea_bfgs, Eb_bfgs, Ec_bfgs), (a, b, c), atol=1e-3, rtol=0) nsgd = structured_sgd(sgd) res = nsgd(qobj_struc, w0, data, bounds=None, eval_obj=True, gtol=1e-4, passes=1000, rate=0.95, eta=1e-6) (Ea_sgd, Eb_sgd), Ec_sgd = res['x'] assert np.allclose((Ea_sgd, Eb_sgd, Ec_sgd), (a, b, c), atol=1e-1, rtol=0) if nlopt_test: res = nmin(qobj_struc, w0, args=(data, False), jac=False, bounds=None, method='LN_BOBYQA', backend='nlopt') (Ea_bq, Eb_bq), Ec_bq = res['x'] assert np.allclose((Ea_bq, Eb_bq, Ec_bq), (a, b, c), atol=1e-3, rtol=0)
def test_structured_params(make_quadratic, make_random): random = make_random a, b, c, data, _ = make_quadratic w0 = [Parameter(random.randn(2), Bound()), Parameter(random.randn(1), Bound()) ] qobj_struc = lambda w12, w3, data: q_struc(w12, w3, data, qobj) assert_opt = lambda Eab, Ec: \ np.allclose((a, b, c), (Eab[0], Eab[1], Ec), atol=1e-3, rtol=0) nmin = structured_minimizer(minimize) res = nmin(qobj_struc, w0, args=(data,), jac=True, method='L-BFGS-B') assert_opt(*res.x) nsgd = structured_sgd(sgd) res = nsgd(qobj_struc, w0, data, eval_obj=True, random_state=make_random) assert_opt(*res.x) qf_struc = lambda w12, w3, data: q_struc(w12, w3, data, qfun) qg_struc = lambda w12, w3, data: q_struc(w12, w3, data, qgrad) res = nmin(qf_struc, w0, args=(data,), jac=qg_struc, method='L-BFGS-B') assert_opt(*res.x)
def test_structured_params(make_quadratic, make_random): random = make_random a, b, c, data, _ = make_quadratic w0 = [ Parameter(random.randn(2), Bound()), Parameter(random.randn(1), Bound()) ] qobj_struc = lambda w12, w3, data: q_struc(w12, w3, data, qobj) assert_opt = lambda Eab, Ec: \ np.allclose((a, b, c), (Eab[0], Eab[1], Ec), atol=1e-3, rtol=0) nmin = structured_minimizer(minimize) res = nmin(qobj_struc, w0, args=(data, ), jac=True, method='L-BFGS-B') assert_opt(*res.x) nsgd = structured_sgd(sgd) res = nsgd(qobj_struc, w0, data, eval_obj=True, random_state=make_random) assert_opt(*res.x) qf_struc = lambda w12, w3, data: q_struc(w12, w3, data, qfun) qg_struc = lambda w12, w3, data: q_struc(w12, w3, data, qgrad) res = nmin(qf_struc, w0, args=(data, ), jac=qg_struc, method='L-BFGS-B') assert_opt(*res.x)
def test_rand_start(make_quadratic, make_random): random = make_random a, b, c, data, _ = make_quadratic w0 = [Parameter(gamma(1), Positive(), shape=(2, )), Parameter(1., Bound())] qobj_struc = lambda w12, w3, data: q_struc(w12, w3, data, qobj) assert_opt = lambda Eab, Ec: \ np.allclose((a, b, c), (Eab[0], Eab[1], Ec), atol=1e-3, rtol=0) nmin = structured_minimizer(logtrick_minimizer(minimize)) res = nmin(qobj_struc, w0, args=(data, ), jac=True, method='L-BFGS-B', random_state=random, nstarts=100) assert_opt(*res.x) nsgd = structured_sgd(logtrick_sgd(sgd)) res = nsgd(qobj_struc, w0, data, eval_obj=True, nstarts=100, random_state=random) assert_opt(*res.x)
def test_rand_start(make_quadratic, make_random): random = make_random a, b, c, data, _ = make_quadratic w0 = [ Parameter(gamma(1), Positive(), shape=(2,)), Parameter(1., Bound()) ] qobj_struc = lambda w12, w3, data: q_struc(w12, w3, data, qobj) assert_opt = lambda Eab, Ec: \ np.allclose((a, b, c), (Eab[0], Eab[1], Ec), atol=1e-3, rtol=0) nmin = structured_minimizer(logtrick_minimizer(minimize)) res = nmin(qobj_struc, w0, args=(data,), jac=True, method='L-BFGS-B', random_state=random, nstarts=100) assert_opt(*res.x) nsgd = structured_sgd(logtrick_sgd(sgd)) res = nsgd(qobj_struc, w0, data, eval_obj=True, nstarts=100, random_state=random) assert_opt(*res.x)