首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用dvc 2.0中其他配置中的参数

使用dvc 2.0中其他配置中的参数
EN

Stack Overflow用户
提问于 2021-04-22 23:00:54
回答 1查看 184关注 0票数 2

使用dvc版本2.0.18和python 3.9.2,当在dvc.yaml中配置阶段的参数时,我希望使用在不同于params.yaml的配置文件中定义的参数。然而,它并没有像我预期的那样工作。

MWE: Git repo + dvc init:

代码语言:javascript
复制
.
├── dvc.yaml
├── preproc.yaml
└── test.py

dvc.yaml:

代码语言:javascript
复制
vars:
  - preproc.yaml
stages:
  test:
    cmd: python test.py
    deps:
      - test.py
    params:
      - important_parameter

preproc.yaml:

代码语言:javascript
复制
important_parameter: 123

运行dvc repro导致以下错误:

代码语言:javascript
复制
ERROR: failed to reproduce 'dvc.yaml': dependency 'params.yaml' does not exist

创建一个没有内容的虚拟params.yaml会带来:

代码语言:javascript
复制
WARNING: 'params.yaml' is empty.
ERROR: failed to reproduce 'dvc.yaml': Parameters 'important_parameter' are missing from 'params.yaml'.

我遗漏了什么?使用模板功能可以做到这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-23 05:34:02

我认为在这种情况下您不需要模板功能。如此example中所示

代码语言:javascript
复制
stages:
  train:
    cmd: python train.py
    deps:
      - users.csv
    params:
      - params.py:
          - BOOL
          - INT
          - TrainConfig.EPOCHS
          - TrainConfig.layers
    outs:
      - model.pkl

重定义默认params.yaml的方法是在params:部分中显式指定文件名:

代码语言:javascript
复制
params:
  - preproc.yaml:
    - important_parameter

此外,使用dvc run (不推荐)或dvc stage add创建后台文件时,可以明确提供参数文件名作为前缀:

代码语言:javascript
复制
dvc run -n train -d train.py -d logs/ -o users.csv -f \
          -p parse_params.yaml:threshold,classes_num \
          python train.py

其中^^ parse_params.yaml是一个自定义的参数文件。

请让我知道它是否解决了问题,如果您有任何其他问题:)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67215839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档