def log_params_flatten(params: dict, parent_key: str = "", sep: str = ".") -> None: """ Log a batch of params after flattening. Parameters ---------- params : dict Dictionary of parameters to log. parent_key : str, default "" Parent key. sep : str, default "." Key separator. Returns ------- None None Examples -------- >>> with mlflow.start_run() as run: ... params = {"a": {"b": 0}} ... mlflow.log_params_flatten(params) ... mlflow.log_params_flatten(params, parent_key="d") ... mlflow.log_params_flatten(params, sep="_") >>> r = mlflow.get_run(run.info.run_id) >>> sorted(r.data.params.items()) [('a.b', '0'), ('a_b', '0'), ('d.a.b', '0')] """ mlflow.log_params(flatten_dict(params, parent_key, sep))
def log_metrics_flatten( metrics: dict, step: Optional[int] = None, parent_key: str = "", sep: str = ".", ) -> None: """ Log a batch of metrics after flattening. Parameters ---------- metrics : dict Dictionary of metrics to log. step : int, default None Metric step. Defaults to zero if unspecified. parent_key : str, default "" Parent key. sep : str, default "." Key separator. Examples -------- >>> with mlflow.start_run() as run: ... metrics = {"a": {"b": 0.0}} ... mlflow.log_metrics_flatten(metrics) ... mlflow.log_metrics_flatten(metrics, parent_key="d") ... mlflow.log_metrics_flatten(metrics, sep="_") >>> r = mlflow.get_run(run.info.run_id) >>> sorted(r.data.metrics.items()) [('a.b', 0.0), ('a_b', 0.0), ('d.a.b', 0.0)] """ mlflow.log_metrics(flatten_dict(metrics, parent_key, sep), step)
def test_flatten_dict(): dct = {"a": {"b": "c"}} assert utils.flatten_dict(dct) == {"a.b": "c"} assert utils.flatten_dict(dct, parent_key="d") == {"d.a.b": "c"} assert utils.flatten_dict(dct, sep="_") == {"a_b": "c"}