Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Accessing optimizer's internal state #97

Open
akamaus opened this issue Aug 30, 2018 · 5 comments
Open

Accessing optimizer's internal state #97

akamaus opened this issue Aug 30, 2018 · 5 comments

Comments

@akamaus
Copy link

akamaus commented Aug 30, 2018

Currently optimization process is a fully-automatic blackbox. I mean, you call fmin.bayes_optimization with appropriate arguments, wait for some time and get the answers together with various running stats, like points tried, incumbents and so on. By the time you get the results, optimizer internal state is gone, so various interesting stuff like acquisition function behavior can't be analyzed.

What do you think about giving the option for client code to control optimization loop? For example, splitting BaseSolver.run into BaseSolver.start and BaseSolver.step, so interested users could write

opt.start()
for k in range(num_iters):
   opt.step()
   <some visualization code>
@aaronkl
Copy link
Contributor

aaronkl commented Aug 30, 2018

Hi, good point. You can already do that by instantiating the robo.solver.BayesianOptimization class and call the choose_next() function: For example:


bo = robo.solver.BayesianOptimization(model, acquisition, lower, upper, objective,..)
X=None
Y=None
for k in range(num_iters):
      x_next = bo.chose_next(X, Y)
      # evaluate x_next and update X, Y

@akamaus
Copy link
Author

akamaus commented Aug 30, 2018

Right now I call bo.run(n_init+1, bo.X, bo.y) and analyse state in between. Still it requires quite a lot of lines to setup (I basically had to replicate fmin.bayesian_optimisation guts).

@aaronkl
Copy link
Contributor

aaronkl commented Aug 31, 2018

Unfortunately yes. We are right now working on a new package that is more flexible than RoBO but contains the same functionality. We are planning it to release it in the next weeks.

@tzoiker
Copy link

tzoiker commented Oct 23, 2018

@aaronkl Hello! What is the package name, was it already released?

@aaronkl
Copy link
Contributor

aaronkl commented Oct 24, 2018

yes it is online (https://github.com/amzn/emukit) but not yet officially released and under heavy development

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants