Hydra多配置扫面执行报错,如何实现12种配置组合实验?
Hydra多模型多数据集网格搜索解决方案
问题根源
你用的???是Hydra的必填参数占位符,程序会强制要求手动输入该参数的值,这就是运行时提示指定dataset、model的原因,不能用它来实现参数搜索。
正确配置方式
1. 确认conf目录结构
确保配置目录结构符合Hydra要求:
conf/ ├── config.yaml ├── model/ │ ├── model_a.yaml │ └── model_b.yaml └── dataset/ ├── data1.yaml ├── data2.yaml ├── data3.yaml ├── data4.yaml ├── data5.yaml └── data6.yaml
2. 修改config.yaml
将defaults中的???替换为null,并配置扫面参数:
defaults: - _self_ - model: null # 表示该参数由扫面器动态填充 - dataset: null hydra: sweeper: params: model: 'glob(*)' # 匹配model目录下所有配置文件 dataset: 'glob(*)' # 匹配dataset目录下所有配置文件
3. 触发多实验运行
运行时必须加上--multirun(或简写-m)参数,否则Hydra只会执行单实验,依然会要求指定参数:
python main.py --multirun
更灵活的命令行方式
如果不想修改配置文件,也可以直接在命令行指定扫面参数:
python main.py --multirun model=glob(*) dataset=glob(*)
效果验证
以上两种方式都会自动生成2个模型 × 6个数据集 = 12种配置组合,每个组合对应一次独立实验。
内容的提问来源于stack exchange,提问作者Demetri Pananos
相关产品推荐
相关产品推荐

