generate all possible configs for hyperparameters from hyperparameter space.
        ss_spec: hyperparameter space

def json2paramater(self, ss_spec):
        '''
        generate all possible configs for hyperparameters from hyperparameter space.
        ss_spec: hyperparameter space
        '''
        if isinstance(ss_spec, dict):
            if '_type' in ss_spec.keys():
                _type = ss_spec['_type']
                _value = ss_spec['_value']
                chosen_params = list()
                if _type == 'choice':
                    for value in _value:
                        choice = self.json2paramater(value)
                        if isinstance(choice, list):
                            chosen_params.extend(choice)
                        else:
                            chosen_params.append(choice)
                else:
                    chosen_params = self.parse_qtype(_type, _value)
            else:
                chosen_params = dict()
                for key in ss_spec.keys():
                    chosen_params[key] = self.json2paramater(ss_spec[key])
                return self.expand_parameters(chosen_params)
        elif isinstance(ss_spec, list):
            chosen_params = list()
            for subspec in ss_spec[1:]:
                choice = self.json2paramater(subspec)
                if isinstance(choice, list):
                    chosen_params.extend(choice)
                else:
                    chosen_params.append(choice)
            chosen_params = list(map(lambda v: {ss_spec[0]: v}, chosen_params))
        else:
            chosen_params = copy.deepcopy(ss_spec)
        return chosen_params