基于hydra库实现yaml配置文件的读取(支持命令行参数)

argparse库的使用,发现较为方便。但是应对参数较多的场景时,在命令行里修改参数就变得较为麻烦。因此转向了对配置文件的使用,yaml是一个开放性的配置文件格式。使用yaml库加载不支持命令行参数,使用hydra库加载配置文件时可以支持命令行参数(实现对默认配置的新增、修改与删除)。hydra对于yaml配置文件中支持的格式有:str、int、float、bool、list这5种格式,完全满足一般项目的基本配置了。

Hydra 是一个开源 Python 框架,可简化研究和其他复杂应用程序的开发。
关键特性是能够通过组合动态创建分层配置,并通过配置文件和命令行覆盖它。 Hydra 这个名字来源于它能够运行多个类似的工作——就像一个有多个头的 Hydra。

简单来讲,就是管理yaml config配置文件的,更方便一点的,虽然也可以yaml.load(),但是这个就是遇到了和没遇到一些工具的区别,比如 tensorboard 和wandb 之类的 wandb真的是香

  1. 官方文档:Getting started | Hydra
  2. towards上英文教程:Complete tutorial on how to use Hydra in Machine Learning projects
  3. 配合使用OmegaConf:OmegaConf — OmegaConf 2.3.0.dev0 documentation

安装hydra

pip install hydra-core

hydra 配置框架用法详解

创建config.yaml

model:
  sample_rate: &sample_rate 16000

  train_ds:
    manifest_filepath: ???
    sample_rate: 16000
    batch_size: 32
    trim_silence: false
    max_duration: 16.7
    shuffle: true
    is_tarred: false
    tarred_audio_filepaths: null
    use_start_end_token: false

defaults:
  - _self_  #放在- foo: bar的前面优先使用defaults下面的- foo: bar中的值
  - foo: bar
  #- _self_ #放在- foo: bar的后面优先使用defaults外面的- foo: bar中的值

上面defaults的使用还没确认,后续取调试看下最终结果

defaults:
  - base
  - _self_

如上 base 表示本目录下的base.yaml 文件,

_self_ 表示自身的文件

如果有相同的字段,defaults 后面的会覆盖前面的,例如 如果 base 和_self_ 有相同的字段,则_self_ 中的会覆盖 base中的。不过在一个大的字典下,但是字段名不同,则会合并两个字段放到同样的大字典下

参考文章: 基于hydra库实现yaml配置文件的读取(支持命令行参数)-pudn.com

【Python】Hydra 库使用记录 - Kin_Zhang - 博客园

yaml中使用记录及环境变量的交互_jaffe—fly的博客-CSDN博客_yaml获取环境变量

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值