josejimenezluna / pyGPGO

Bayesian optimization for Python
http://pygpgo.readthedocs.io
MIT License
241 stars 61 forks source link

Range of int parameters not considered as expected #36

Open david-cros opened 9 months ago

david-cros commented 9 months ago

Hello, I use the package (v0.5.1) to tune hyperparameters in deep learning. I noted that for the parameters that are defined as integer values, the last value is never considered. I think this is because the function : def _sampleParam(self): d = OrderedDict() for index, param in enumerate(self.parameter_key): if self.parameter_type[index] == 'int': d[param] = np.random.randint( self.parameter_range[index][0], self.parameter_range[index][1]) elif self.parameter_type[index] == 'cont': d[param] = np.random.uniform( self.parameter_range[index][0], self.parameter_range[index][1]) else: raise ValueError('Unsupported variable type.') return d in GPGO.py. This is not convenient in particular when I use an integer variable to define activation functions, as it makes that the last one is not evaluated. For now I just put a dummy function as last element of my vector. I think it should be: d[param] = np.random.randint( self.parameter_range[index][0], self.parameter_range[index][1]+1)