def _update(self, **kwargs): params = kwargs params["logger"] = params.pop( "logger", config_logging(logger=params.get("model_name", self.model_name), console_log_level="info")) for key in params: if key.endswith("_params") and key + "_update" in params: params[key].update(params[key + "_update"]) # path_override_check path_check_list = [ "dataset", "root_data_dir", "workspace", "root_model_dir", "model_dir" ] _overridden = {} for path_check in path_check_list: if kwargs.get(path_check) is None or kwargs[path_check] == getattr( self, "%s" % path_check): _overridden[path_check] = False else: _overridden[path_check] = True for param, value in params.items(): setattr(self, "%s" % param, value) def is_overridden(varname): return _overridden["%s" % varname] # set dataset if is_overridden("dataset") and not is_overridden("root_data_dir"): kwargs["root_data_dir"] = path_append("$root", "data", "$dataset") # set workspace if (is_overridden("workspace") or is_overridden("root_model_dir") ) and not is_overridden("model_dir"): kwargs["model_dir"] = path_append("$root_model_dir", "$workspace") # rebuild relevant directory or file path according to the kwargs _dirs = [ "workspace", "root_data_dir", "data_dir", "root_model_dir", "model_dir" ] for _dir in _dirs: exp = var2exp(kwargs.get(_dir, getattr(self, _dir)), env_wrap=lambda x: "self.%s" % x) setattr(self, _dir, eval(exp)) self.validation_result_file = path_append(self.model_dir, RESULT_JSON, to_str=True) self.cfg_path = path_append(self.model_dir, CFG_JSON, to_str=True)
def var2val(self, var): return eval(var2exp(var, env_wrap=lambda x: "self.%s" % x))
def __init__(self, params_path=None, **kwargs): """ Configuration File, including categories: * directory setting * optimizer setting * training parameters * equipment * parameters saving setting * user parameters Parameters ---------- params_path: str The path to configuration file which is in json format kwargs: Parameters to be reset. """ super(Configuration, self).__init__( logger=config_logging( logger=self.model_name, console_log_level=LogLevel.INFO ) ) params = self.class_var if params_path: params.update(self.load_cfg(cfg_path=params_path)) params.update(**kwargs) for key in params: if key.endswith("_params") and key + "_update" in params: params[key].update(params[key + "_update"]) # path_override_check path_check_list = ["dataset", "root_data_dir", "workspace", "root_model_dir", "model_dir"] _overridden = {} for path_check in path_check_list: if kwargs.get(path_check) is None or kwargs[path_check] == getattr(self, "%s" % path_check): _overridden[path_check] = False else: _overridden[path_check] = True for param, value in params.items(): setattr(self, "%s" % param, value) def is_overridden(varname): return _overridden["%s" % varname] # set dataset if is_overridden("dataset") and not is_overridden("root_data_dir"): kwargs["root_data_dir"] = path_append("$root", "data", "$dataset") # set workspace if (is_overridden("workspace") or is_overridden("root_model_dir")) and not is_overridden("model_dir"): kwargs["model_dir"] = path_append("$root_model_dir", "$workspace") # rebuild relevant directory or file path according to the kwargs _dirs = [ "workspace", "root_data_dir", "data_dir", "root_model_dir", "model_dir" ] for _dir in _dirs: exp = var2exp( kwargs.get(_dir, getattr(self, _dir)), env_wrap=lambda x: "self.%s" % x ) setattr(self, _dir, eval(exp)) _vars = [ "ctx" ] for _var in _vars: if _var in kwargs: try: setattr(self, _var, eval_var(kwargs[_var])) except TypeError: pass self.validation_result_file = path_append( self.model_dir, "result.json", to_str=True ) self.cfg_path = path_append( self.model_dir, "configuration.json", to_str=True )
def __init__(self, params_json=None, **kwargs): """ Configuration File, including categories: * directory setting * optimizer setting * training parameters * equipment * parameters saving setting * user parameters Parameters ---------- params_json: str The path to configuration file which is in json format kwargs: Parameters to be reset. """ super(Configuration, self).__init__(logger=config_logging( logger=self.model_name, console_log_level=LogLevel.INFO)) params = self.class_var if params_json: params.update(self.load_cfg(params_json=params_json)) params.update(**kwargs) for param, value in params.items(): setattr(self, "%s" % param, value) # set dataset if kwargs.get("dataset") and not kwargs.get("root_data_dir"): kwargs["root_data_dir"] = "$root/data/$dataset" # set workspace if (kwargs.get("workspace") or kwargs.get("root_model_dir")) and not kwargs.get("model_dir"): kwargs["model_dir"] = "$root_model_dir/$workspace" # rebuild relevant directory or file path according to the kwargs _dirs = [ "workspace", "root_data_dir", "data_dir", "root_model_dir", "model_dir" ] for _dir in _dirs: exp = var2exp(kwargs.get(_dir, getattr(self, _dir)), env_wrap=lambda x: "self.%s" % x) setattr(self, _dir, eval(exp)) _vars = [ # "ctx" ] for _var in _vars: if _var in kwargs: try: setattr(self, _var, eval_var(kwargs[_var])) except TypeError: pass self.validation_result_file = path_append(self.model_dir, "result.json", to_str=True) self.cfg_path = path_append(self.model_dir, "configuration.json", to_str=True)