autonomio / talos

Hyperparameter Experiments with TensorFlow and Keras
https://autonom.io
MIT License
1.62k stars 268 forks source link

Reporting of grid size for downsampling. #326

Closed bbogart closed 5 years ago

bbogart commented 5 years ago

It took me a while before I realized that my grid_downsample value was too low for my parameter space. Talos is good to report that no permutations are to be run when downsample is too small, but in my case I was getting only two permutations and not sure what was going on, see this Stack Overflow Question.

How about Talos prints out the size of the grid and the number of permutations to be tested? i.e. the practical implication of the choice of both number of parameters and down-sampling.

mikkokotila commented 5 years ago

Related with #261.

mikkokotila commented 5 years ago

This is fixed from v0.6 onwards. See the below example:

---------------------------------------------------------------------------
TalosDataError                            Traceback (most recent call last)
<ipython-input-2-21954f7672ee> in <module>
----> 1 scan_object = minimal()

<ipython-input-1-b07bc034c09b> in minimal()
     32         return out, model
     33 
---> 34     scan_object = ta.Scan(x, y, model=iris_model, params=p, fraction_limit=0.001)
     35 
     36     return scan_object

~/Documents/GitHub/talos/talos/scan/Scan.py in __init__(self, x, y, params, model, experiment_name, x_val, y_val, val_split, random_method, performance_target, fraction_limit, round_limit, time_limit, boolean_limit, reduction_method, reduction_interval, reduction_window, reduction_threshold, reduction_metric, minimize_loss, seed, clear_session, disable_progress_bar, print_params, debug)
    170         # input parameters section ends
    171 
--> 172         self.runtime()
    173 
    174     def runtime(self):

~/Documents/GitHub/talos/talos/scan/Scan.py in runtime(self)
    175 
    176         from .scan_run import scan_run
--> 177         self = scan_run(self)

~/Documents/GitHub/talos/talos/scan/scan_run.py in scan_run(self)
      7 
      8     from .scan_prepare import scan_prepare
----> 9     self = scan_prepare(self)
     10 
     11     # initiate the progress bar

~/Documents/GitHub/talos/talos/scan/scan_prepare.py in scan_prepare(self)
     30                                    round_limit=self.round_limit,
     31                                    time_limit=self.time_limit,
---> 32                                    boolean_limit=self.boolean_limit
     33                                    )
     34 

~/Documents/GitHub/talos/talos/parameters/ParamSpace.py in __init__(self, params, param_keys, random_method, fraction_limit, round_limit, time_limit, boolean_limit)
     39 
     40         # apply all the set limits
---> 41         self.param_index = self._param_apply_limits()
     42 
     43         # create the parameter space

~/Documents/GitHub/talos/talos/parameters/ParamSpace.py in _param_apply_limits(self)
     91             return sample_reducer(self.fraction_limit,
     92                                   self.dimensions,
---> 93                                   self.random_method)
     94 
     95         # a round limit is set

~/Documents/GitHub/talos/talos/reducers/sample_reducer.py in sample_reducer(limit, max_value, random_method)
     30     from ..utils.exceptions import TalosDataError
     31     if n < 1:
---> 32         raise TalosDataError("Limiters lead to < 1 permutations.")
     33 
     34     # Initialize Randomizer()

TalosDataError: Limiters lead to < 1 permutations.

You can install it with:

pip install git+http://github.com/autonomio/talos@dev