hydra.core.config_store中ConfigStore的用法

与直接在目录里面添加yaml文件不同,`ConfigStore`支持使用类的方法,定义配置。参考资料:Config Store API | Hydra

假设我们的目录结构是:

├─ conf
│  └─ dataset
│      └─ coco.yaml
└── main.py

我们可以很方便的用Hydra读取`coco.yaml`的配置:

import hydra
from omegaconf import DictConfig, OmegaConf

@hydra.main(config_path="conf")
def func(config: DictConfig):
    print(OmegaConf.to_yaml(config))

if __name__ == "__main__":
    func()

然后在命令行运行:

python main.py +dataset=coco

或者指定`config_name`:

import hydra
from omegaconf import DictConfig, OmegaConf

@hydra.main(config_path="conf/dataset", config_name="coco")
def func(config: DictConfig):
    print(OmegaConf.to_yaml(config))

if __name__ == "__main__":
    func()

选择配置dataset感觉还是第一种好些。

`ConfigStore`可以让我们在python脚本中写一个类作为配置的yaml,不需要我们在新建yaml往里写东西了。这种可能是用在自己写了个.py配置文件的情况:

import hydra
from hydra.core.config_store import ConfigStore
from omegaconf import DictConfig, OmegaConf
from dataclasses import dataclass

@dataclass
class ImageNetConfig:
    name: str = "imagenet"
    size: str = "200k"

cs = ConfigStore.instance()
# Registering the Config class with the name `postgresql` with the config group `db`
cs.store(name="imagenet", group="dataset", node=ImageNetConfig)

@hydra.main(config_path="conf")
def func(config: DictConfig):
    print(OmegaConf.to_yaml(config))

if __name__ == "__main__":
    func()

在命令行运行:

python main.py +dataset=imagenet

就可以切换数据集配置啦,而且不需要再新建个`imagenet.yaml`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值