def test_failure(): #XXX also test the Bandit.exceptions mechanism that actually catches them class BanditE(Exception): pass class DummyBandit(Bandit): param_gen = {"loss": 10} def __init__(self): super(DummyBandit, self).__init__(self.param_gen) def evaluate(self, config, ctrl): raise BanditE() trials = Trials() bandit_algo = Random(DummyBandit()) exp = Experiment(trials, bandit_algo, async=False) exp.run(1) trials.refresh() assert len(trials) == 0 assert len(trials._dynamic_trials) == 1 assert trials._dynamic_trials[0]['state'] == JOB_STATE_ERROR assert trials._dynamic_trials[0]['misc']['error'] != None exp.catch_bandit_exceptions = False nose.tools.assert_raises(BanditE, exp.run, 1) trials.refresh() assert len(trials) == 0 assert len(trials._dynamic_trials) == 2 assert trials._dynamic_trials[1]['state'] == JOB_STATE_ERROR assert trials._dynamic_trials[1]['misc']['error'] != None
def foo(self): self.bandit = bandit = Bandit(self.expr) self.algo = algo = Random(bandit) if hasattr(self, 'n_randints'): n_randints = len(filter( lambda x: x.name == 'randint', algo.vh.params.values())) assert n_randints == self.n_randints self.trials = Trials() self.experiment = Experiment(self.trials, algo, async=False) self.experiment.run(5) self.output = output = [] for trial in self.trials._trials: print '' tmp = [] for nid in trial['misc']['idxs']: thing = ( nid, trial['misc']['idxs'][nid], trial['misc']['vals'][nid]) print thing tmp.append(thing) tmp.sort() output.append(tmp) print repr(output) print repr(self.wanted) # -- think of a more robust way to test these things # or, if the sampling style is to be nailed down, # put it in and be sure of it. raise nose.SkipTest() assert output == self.wanted
def setUp(self): self.bandit = coin_flip() self.algo = Random(self.bandit) self.trials = Trials() self.experiment = Experiment(self.trials, self.algo, async=False)
def setUp(self): self.bandit = coin_flip() self.algo = Random(self.bandit)