如何在 hydra-python 中创建来自同一组的两个字段?

How to create two fields from the same group in hydra-python?

我的配置文件结构:

config
├── train_dataset
│   ├── adobe5k.yaml
│   ├── my_train_data1.yaml
│   └── cifar10.yaml
├── valid_dataset
│   ├── adobe5k.yaml
│   └── cifar10.yaml
└── config.yaml

而我的 config.yaml 是:

# other configs
...

defaults:
  - train_dataset: adobe5k
  - valid_dataset: adobe5k

如您所见,我的配置中有 2 个名为 valid_datasettrain_dataset 的字段,其值是从其自己的配置组中选择的。两个字段的值从同一个组中选取,应该怎么做?

您可以使用默认列表插值来实现。 Default List page high level information and you find a more practical example here一些细节。

defaults:
  - train_dataset: adobe5k
  - valid_dataset: ${train_dataset}

这样,您覆盖 train_dataset 就足够了,验证数据集会自动匹配它(除非您也覆盖它)。

您可以使用 a config group more than once。假设您将数据集配置移动到单个 datasets 目录中。然后您可以按如下方式重新使用它们。

- defaults:
  - datasets@train_dataset: adobe5k
  - datasets@valid_dataset: adobe5k