Hydra多层级配置覆盖问题:实验配置无法正确覆盖主配置
Hydra多层目录结构下的配置覆盖问题及后续报错
我正在按照Hydra官方文档示例,尝试用实验配置覆盖主配置,仅新增了一层目录层级来归类相关配置,目录结构如下:
conf ├── data │ ├── cifar100_data │ │ ├── cifar100_extended.yaml │ │ └── cifar100.yaml │ └── default.yaml ├── experiment │ └── cifar100.yaml └── training_config.yaml
各配置文件内容:
- 基础配置
training_config.yaml:
defaults: - data: default
data/default.yaml:
# @package data dataset: mnist n_classes: 10
data/cifar100_data/cifar100.yaml:
name: cifar100 n_classes: 100
- 初始版本
data/cifar100_data/cifar100_extended.yaml:
# @package data defaults: - cifar100 augmentations: - rotate
我尝试执行命令 python my_app.py experiment=cifar100 用实验配置覆盖主配置,但两次尝试均失败:
尝试1:experiment/cifar100.yaml内容:
# @package _global_ defaults: - override /data/cifar100_data: cifar100_extended
报错信息:
hydra.errors.ConfigCompositionException: In 'experiment/cifar100':
Could not override 'data/cifar100_data'. No match in the defaults list.
尝试2:experiment/cifar100.yaml内容:
# @package _global_ defaults: - override /data: cifar100_data/cifar100_extended
报错信息:
hydra.errors.MissingConfigException: In 'data/cifar100_data/cifar100_extended': Could not load 'data/cifar100'.
根据相关回答调整data/cifar100_data/cifar100_extended.yaml为:
# @package data defaults: - cifar100_data/cifar100 augmentations: - rotate
此时可以生成有效配置,但直接运行cifar100_extended.yaml时出现报错:
hydra.errors.MissingConfigException: In 'cifar100_data/cifar100_extended': Could not load 'cifar100_data/cifar100_data/cifar100'.
内容的提问来源于stack exchange,提问作者itamar kanter
相关产品推荐
相关产品推荐

