def test_default_parameters(self): cea = ht.ConstantParameter('a', value='ce.a') cec = ht.ConstantParameter('c', value='ce.c') toa = (None, ) * 2 args = CE, [cec, cea], fit, acc, *toa, 0 print(args) r = ht.HyperTune(*args).tune()['params'] exp = {'a': 'ce.a', 'c': 'ce.c'} self.assertEqual(r, exp)
def test_constant_param(self): c = ht.ConstantParameter('c', value=10) self.assertEqual(c.shape, 0) self.assertEqual(c.name, 'c') r = rand() v = c.get_val(r) self.assertEqual(v, 10) ca = CA() c = ht.ConstantParameter('a', value=ca) v = c.get_val([-1]) self.assertEqual(v, ca) da = DA() c = ht.ConstantParameter('da', value=da) v = c.get_val([-1]) self.assertEqual(v, da)
def test_parameter_scope(self): cca = ht.ConstantParameter('a', value='cc.a') ccb = ht.ConstantParameter('b', value='cc.b') aio = ht.ObjectParameter('O', obj=CC, parameters=(cca, ccb)) aia = ht.ConstantParameter('a', value='ai.a') r = ht.HyperTune(AI, [aia, aio], fit, acc, max_evals=0).tune()['params'] exp = {'O': {'a': 'cc.a', 'b': 'cc.b'}, 'a': 'ai.a'} self.assertEqual(r, exp) r = ht.HyperTune(AI, [aia, aio], fit, acc, max_evals=0).tune()['params'] self.assertEqual(r, exp) aio = ht.ObjectParameter('O', obj=CC, parameters=(ccb, cca)) r = ht.HyperTune(AI, [aia, aio], fit, acc, max_evals=0).tune()['params'] self.assertEqual(r, exp)
def test_categorical_param(self): c = ht.CategoricalParameter('c', options=('a', 'b')) self.assertEqual(c.name, 'c') self.assertEqual(c.shape, 1) v = c.get_val([-1]) self.assertEqual(v, 'a') co = ht.ContinuousParameter('co', lower_bound=0, upper_bound=1) con = ht.ConstantParameter('con', value=100) c = ht.CategoricalParameter('c', options=('a', co, con)) self.assertEqual(c.shape, 2)
def test_object_param(self): o = ht.ObjectParameter('o', obj=CA, parameters=tuple([])) self.assertEqual(o.shape, 0) prams = 'o', DA, (1, ) self.assertRaises(ValueError, ht.ObjectParameter, *prams) cba = ht.ConstantParameter('a', value='a') o = ht.ObjectParameter('o', obj=CB, parameters=(cba, )) self.assertEqual(o.shape, 0) dba = ht.ConstantParameter('a', value='aaa') o = ht.ObjectParameter('', obj=DB, parameters=(dba, )) v = o.get_val([1]) self.assertEqual(v, 'aaa') cba = ht.DiscreteParameter('a', lower_bound=0, upper_bound=1) o = ht.ObjectParameter('o', obj=CB, parameters=(cba, )) self.assertEqual(o.shape, 1) p = [-1] v = o.get_val(p) self.assertEqual(v.a, cba.get_val(p)) cca = ht.DiscreteParameter('a', lower_bound=0, upper_bound=1) ccb = ht.DiscreteParameter('b', lower_bound=-100, upper_bound=50) o = ht.ObjectParameter('o', obj=CC, parameters=(cca, ccb)) p = [0.5, 0.75] v = o.get_val(p) self.assertEqual(v.a, cca.get_val(p[:1])) self.assertEqual(v.b, ccb.get_val(p[1:])) cca = ht.ConstantParameter('a', value='aaa') ccb = ht.ConstantParameter('b', value='bbb') o = ht.ObjectParameter('o', obj=CC, parameters=(ccb, cca)) p = [0.5, 0.75] v = o.get_val(p) self.assertEqual(v.a, cca.get_val(p[:1])) self.assertEqual(v.b, ccb.get_val(p[1:]))
def test_parameter_scope2(self): cca = ht.ConstantParameter('a', value='cc.a') ccb = ht.ConstantParameter('b', value='cc.b') aio = ht.ObjectParameter('O', obj=CC, parameters=(ccb, cca)) aia = ht.ConstantParameter('a', value='ai.a') cdo = ht.ObjectParameter('O', obj=AI, parameters=(aio, aia)) cda = ht.ConstantParameter('a', value='cd.a') cdb = ht.ConstantParameter('b', value='cd.b') r = ht.HyperTune(CD, [cda, cdb, cdo], fit, acc, max_evals=0).tune()['params'] exp = { 'a': 'cd.a', 'b': 'cd.b', 'O': { 'O': { 'a': 'cc.a', 'b': 'cc.b' }, 'a': 'ai.a' } } self.assertEqual(r, exp)
def test_tuple_param(self): t = ht.TupleParameter('t', values=(1, 1, 1)) self.assertEqual(t.shape, 0) c = ht.ContinuousParameter('c', lower_bound=0, upper_bound=1) d = ht.DiscreteParameter('d', lower_bound=0, upper_bound=1) co = ht.ConstantParameter('co', value='world') t = ht.TupleParameter('t', values=(c, d, co)) self.assertEqual(t.shape, 2) r = [-1, 0.5] v = t.get_val(r) exp = (0.0, 1, 'world') self.assertEqual(v, exp) t = ht.TupleParameter('t', values=(c, {'z': -1}, d)) r = [-1, 0.5] v = t.get_val(r) exp = (0.0, {'z': -1}, 1) self.assertEqual(v, exp)