在 GitHub 上编辑

dvc.api.metrics_show()

获取在 DVC 仓库 中跟踪的指标

def metrics_show(
    *targets: str,
    repo: Optional[str] = None,
    rev: Optional[str] = None,
    config: Optional[dict] = None,
) -> Dict:

用法:

import dvc.api

metrics = dvc.api.metrics_show()

描述

从一个 DVC 仓库 获取指标值,并返回一个字典,例如:

{
  "avg_prec": { "train": 0.97, "val": 0.92 },
  "roc_auc": { "train": 0.98, "val": 0.94 }
}

不带参数时,此函数将从所有被跟踪的指标文件(在任何 dvc.yaml 文件中使用)中检索所有指标。当使用 Git 时,这适用于当前项目版本(包括工作区中的任何更改)。

通过以下函数参数,可以限制获取的内容。

Metrics

  • *targets - 一个或多个指向有效指标文件的路径,用于从中获取指标,例如 "eval/train_val_metrics.json", "eval/test_metrics.json"。若未提供 targets,默认将使用所有在任意 dvc.yaml 中被跟踪的指标文件。

  • repo — 指定 DVC 项目的所在位置。可以是 URL 或文件系统路径。在线 Git 仓库支持 HTTP 和 SSH 协议(例如 [user@]server:project.git)。默认值:当前项目(从当前工作目录向上查找确定)。

  • rev - Git 提交(任何版本,如分支名、标签名、提交哈希或实验名称)。如果 repo 不是 Git 仓库,则忽略此选项。默认值None(使用当前工作树)

  • config - 传递给 DVC 项目的 配置 字典。该配置会与现有项目配置合并,可用于例如向 remote 提供凭据。示例请参见 dvc.api.open

示例:按一个或多个目标过滤

targets 可以是单个名称(字符串):

import dvc.api
metrics = dvc.api.metrics_show("eval/train_val_metrics.json")
{
  "avg_prec": { "train": 0.97, "val": 0.92 },
  "roc_auc": { "train": 0.98, "val": 0.94 }
}

或者多个名称(字符串):

import dvc.api
metrics = dvc.api.metrics_show("eval/train_val_metrics.json", "eval/test_metrics.json")
{
  "eval/train_val_metrics.json": {
    "avg_prec": { "train": 0.97, "val": 0.92 },
    "roc_auc": { "train": 0.98, "val": 0.94 }
  },
  "eval/test_metrics.json": {
    "avg_prec": { "test": 0.72 },
    "roc_auc": { "test": 0.77 }
  }
}

示例:按修订版本过滤

你可以传入任意有效的 Git 修订版本,仅获取该版本中的指标:

import dvc.api
metrics = dvc.api.metrics_show(rev="HEAD~1")
{
  "avg_prec": { "train": 0.97, "val": 0.92 },
  "roc_auc": { "train": 0.98, "val": 0.94 }
}

示例:使用远程 DVC 仓库

你可以使用 repo 参数从任意 DVC 仓库 获取指标,而无需将其克隆到本地。

import dvc.api
metrics = dvc.api.metrics_show(
    repo="https://github.com/iterative/example-get-started")
{
  "avg_prec": {
    "train": 0.9743681430252835,
    "test": 0.9249974999612706
  },
  "roc_auc": {
    "train": 0.9866678562450621,
    "test": 0.9460213440787918
  }
}
内容

🐛 发现问题?告诉我们!或者修复它:

在 GitHub 上编辑

有疑问?加入我们的聊天,我们会为您提供帮助:

Discord 聊天