0

我想运行Hydra multirun,但在配置文件中指定扫描。在请求功能请求之前,我想知道是否有办法做到这一点。

到目前为止,我尝试过的内容如下:

树结构:

.
├── conf
│   ├── compile
│   │   ├── base.yaml
│   │   └── grid_search.yaml
│   └── config.yaml
└── my_app.py

内容my_appy.py

import hydra
from omegaconf import DictConfig, OmegaConf

@hydra.main(config_path="conf", config_name="config")
def my_app(cfg : DictConfig) -> None:
    print(OmegaConf.to_yaml(cfg, resolve=True))

if __name__ == "__main__":
    my_app()

内容conf/config.yaml

defaults:
  - compile: base

内容conf/compile/base.yaml

loss: mse
optimizer: adam

内容conf/compile/grid_search.yaml

defaults:
  - base

lr: 1e-2,1e-3,1e-4

当我运行时python my_app.py -m compile=grid_search,我得到以下输出:

[2022-01-07 10:08:05,414][HYDRA] Launching 1 jobs locally
[2022-01-07 10:08:05,414][HYDRA]        #0 : compile=grid_search
compile:
  loss: mse
  optimizer: adam
  lr: 1e-2,1e-3,1e-4

这是我理解的输出,因为在此示例中,无法区分保存列表的配置变量和要扫描的配置变量。有没有在配置文件中指出这样的事情?

基本上我希望能够在配置文件中而不是在命令行或 shell 脚本中指定我的网格搜索。

额外的问题:对于由字典覆盖指定的扫描,这将如何完成,就像在这个问题中一样?

4

0 回答 0