Python hydra库(OmegaConf)(yaml)

hydra简单来讲,就是更加方便地管理yaml config配置文件的

hydra使用OmegaConf这个库,用来解析yaml配置文件

pip install hydra-core

示例

config.yaml是这样

device: 'cpu'
dataset:
  name: imagenet
  path: ./dataset/imagenet
TTA: False

import hydra
from omegaconf import DictConfig

@hydra.main(config_name='config.yaml')
def my_app(cfg: DictConfig):
    #此时cfg就是一个dict
    print(cfg)
    print(cfg.dataset)
    print(cfg.dataset.name)
    
if __name__ == '__main__':
    my_app()

然后hydra运行时,会自动建立一个输出文件夹,包含日期和时间信息,然后还会直接将路径调到里面去,以方便保存脚本内的各种东西。

使用hydra的一个好处是我们可以在命令行非常方便的更改配置参数

例如上面代码运行命令是

python try.py

而我们想更改数据集,就可以直接

python try.py dataset=MNIST

### Python Hydra框架使用教程 Hydra是一个强大的配置管理,旨在简化Python应用程序中的配置处理过程[^3]。通过Hydra可以轻松定义复杂的嵌套配置结构,并支持多种配置源如YAML文件、命令行参数以及环境变量。 #### 安装Hydra 要开始使用Hydra,首先需要安装该: ```bash pip install hydra-core ``` #### 基本概念 - **Config**: 配置对象,通常由`.yaml`文件提供。 - **@hydra.main()**: 装饰器用于指定默认配置路径和应用入口函数。 - **OmegaConf**: 提供API操作配置数据结构。 #### 创建简单项目 创建一个新的目录作为工作区,在其中放置如下两个文件: 1. `config.yaml`: 存储基本设置. 2. `main.py`: 主程序逻辑. ##### config.yaml ```yaml # @package _global_ db: driver: mysql user: root password: secret ``` ##### main.py ```python import hydra from omegaconf import DictConfig, OmegaConf @hydra.main(version_base=None, config_path=".", config_name="config") def my_app(cfg: DictConfig) -> None: print(OmegaConf.to_yaml(cfg)) if __name__ == "__main__": my_app() ``` 运行此脚本将会打印出解析后的配置信息[^4]: ```bash $ python main.py db: driver: mysql user: root password: secret ``` #### 使用命令行覆盖配置项 可以通过命令行参数动态修改某些字段而不必更改原始配置文件: ```bash $ python main.py db.user=admin db.password=new_secret db: driver: mysql user: admin password: new_secret ``` #### 导入其他模块或包内的配置 当项目变得更大更复杂时,可能希望将不同部分的配置分离到各自的子目录中。这同样可以通过简单的语法实现: 假设存在另一个名为`networks/default.yaml` 的网络配置文件,则可以在主配置文件里这样引入它: ```yaml defaults: - override networks: default ``` 此时执行会加载来自`networks/default.yaml` 中的内容并将其合并至顶层配置树下[^5].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值