def test_log_params(make_quadratic): a, b, c, data, _ = make_quadratic w0 = np.abs(np.random.randn(3)) bounds = [Positive(), Bound(), Positive()] assert_opt = lambda Ea, Eb, Ec: \ np.allclose((a, b, c), (Ea, Eb, Ec), atol=1e-3, rtol=0) nmin = logtrick_minimizer(minimize) res = nmin(qobj, w0, args=(data, ), jac=True, method='L-BFGS-B', bounds=bounds) assert_opt(*res.x) nsgd = logtrick_sgd(sgd) res = nsgd(qobj, w0, data, eval_obj=True, bounds=bounds, random_state=randstate) assert_opt(*res.x) nmin = logtrick_minimizer(minimize) res = nmin(qfun, w0, args=(data, ), jac=qgrad, method='L-BFGS-B', bounds=bounds) assert_opt(*res.x)
def test_log_params(make_quadratic): a, b, c, data, _ = make_quadratic w0 = np.abs(np.random.randn(3)) bounds = [Positive(), Bound(), Positive()] nmin = logtrick_minimizer(minimize) res = nmin(qobj, w0, args=(data,), jac=True, bounds=bounds, 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 = logtrick_sgd(sgd) res = nsgd(qobj, w0, data, bounds=bounds, 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, w0, args=(data, False), jac=False, bounds=bounds, 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_logstruc_params(make_quadratic): a, b, c, data, _ = make_quadratic w0 = [np.abs(np.random.randn(2)), np.abs(np.random.randn(1))[0]] bounds = [Positive(shape=(2,)), Bound()] nmin = structured_minimizer(logtrick_minimizer(minimize)) res = nmin(qobj_struc, w0, args=(data,), jac=True, bounds=bounds, 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-2, rtol=0) nsgd = structured_sgd(logtrick_sgd(sgd)) res = nsgd(qobj_struc, w0, data, bounds=bounds, 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_logstruc_params(make_quadratic, make_random): random = make_random a, b, c, data, _ = make_quadratic w0 = [Parameter(random.gamma(2, size=(2,)), Positive()), Parameter(random.randn(), 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') assert_opt(*res.x) nsgd = structured_sgd(logtrick_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_logstruc_params(make_quadratic, make_random): random = make_random a, b, c, data, _ = make_quadratic w0 = [ Parameter(random.gamma(2, size=(2, )), Positive()), Parameter(random.randn(), 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') assert_opt(*res.x) nsgd = structured_sgd(logtrick_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_log_params(make_quadratic, make_random): random = make_random a, b, c, data, _ = make_quadratic w0 = np.abs(random.randn(3)) bounds = [Positive(), Bound(), Positive()] assert_opt = lambda Ea, Eb, Ec: \ np.allclose((a, b, c), (Ea, Eb, Ec), atol=1e-3, rtol=0) nmin = logtrick_minimizer(minimize) res = nmin(qobj, w0, args=(data,), jac=True, method='L-BFGS-B', bounds=bounds) assert_opt(*res.x) nsgd = logtrick_sgd(sgd) res = nsgd(qobj, w0, data, eval_obj=True, bounds=bounds, random_state=make_random) assert_opt(*res.x) nmin = logtrick_minimizer(minimize) res = nmin(qfun, w0, args=(data,), jac=qgrad, method='L-BFGS-B', bounds=bounds) 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)