Пример #1
0
 def var2val(self, var):
     return eval(var2exp(var, env_wrap=lambda x: "self.%s" % x))
Пример #2
0
    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)
Пример #3
0
    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 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)