Commit 2fa77bcc authored by Lee's avatar Lee Committed by xuehui
Browse files

Fix NoneType object bug in Metis (#814)

* add different tuner config files for config_test

* change MetisTuner config test due to no lightgbm python module in integration test

* install smac package in azure-pipelines

* SMAC need swig to be installed

* Try to install swig from source code

* remove SMAC test because the dependency can not be installed

* use sudo to install the swig

* sleep 10s to make sure the port has been released

* remove tuner test for networkmorphism because it uses more than 30s to release the tcp port

* word "down" to "done"

* add config test for Curvefitting assessor

* change file name

* Fix data type not match bug

* Optimize MetisTunner

* pretty the code

* Follow the review comment

* add exploration probability

* Avoid None type object generating
parent 9624f752
...@@ -95,7 +95,7 @@ class MetisTuner(Tuner): ...@@ -95,7 +95,7 @@ class MetisTuner(Tuner):
self.samples_x = [] self.samples_x = []
self.samples_y = [] self.samples_y = []
self.samples_y_aggregation = [] self.samples_y_aggregation = []
self.history_parameters = set() self.history_parameters = []
self.space = None self.space = None
self.no_resampling = no_resampling self.no_resampling = no_resampling
self.no_candidates = no_candidates self.no_candidates = no_candidates
...@@ -131,7 +131,7 @@ class MetisTuner(Tuner): ...@@ -131,7 +131,7 @@ class MetisTuner(Tuner):
except Exception as ex: except Exception as ex:
logger.exception(ex) logger.exception(ex)
raise RuntimeError("The format search space contains \ raise RuntimeError("The format search space contains \
some key that didn't define in key_order." ) some key that didn't define in key_order." )
if key_type == 'quniform': if key_type == 'quniform':
if key_range[2] == 1: if key_range[2] == 1:
...@@ -386,7 +386,7 @@ class MetisTuner(Tuner): ...@@ -386,7 +386,7 @@ class MetisTuner(Tuner):
if next_improvement > temp_improvement: if next_improvement > temp_improvement:
logger.info("DEBUG: \"next_candidate\" changed: \ logger.info("DEBUG: \"next_candidate\" changed: \
lowest mu might reduce from %f (%s) to %f (%s), %s\n" %\ lowest mu might reduce from %f (%s) to %f (%s), %s\n" %\
lm_current['expected_mu'], str(lm_current['hyperparameter']),\ lm_current['expected_mu'], str(lm_current['hyperparameter']),\
threads_result['expected_lowest_mu'],\ threads_result['expected_lowest_mu'],\
str(threads_result['candidate']['hyperparameter']),\ str(threads_result['candidate']['hyperparameter']),\
...@@ -412,8 +412,12 @@ class MetisTuner(Tuner): ...@@ -412,8 +412,12 @@ class MetisTuner(Tuner):
outputs = self._pack_output(lm_current['hyperparameter']) outputs = self._pack_output(lm_current['hyperparameter'])
ap = random.uniform(0, 1) ap = random.uniform(0, 1)
if outputs in self.history_parameters or ap<=self.exploration_probability: if outputs in self.history_parameters or ap<=self.exploration_probability:
outputs = self._pack_output(next_candidate['hyperparameter']) if next_candidate is not None:
self.history_parameters.add(outputs) outputs = self._pack_output(next_candidate['hyperparameter'])
else:
random_parameter = _rand_init(self.x_bounds, self.x_types, 1)[0]
outputs = self._pack_output(random_parameter)
self.history_parameters.append(outputs)
return outputs return outputs
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment