0

我想获取一个配置列表作为(默认)值条目,并使用结构化模式来验证输入列表。

例如,在trainer.yaml

defaults:
  - callbacks:
    - checkpointer
    - early_stopping

callbacks/checkpointer.yamlcallbacks/early_stopping.yaml我有一个链接到适当的结构化配置作为默认值,例如:

# callbacks/checkpointer.yaml
defaults:
  - /trainer_lib/callbacks/base_checkpointer@_here_

结构化架构:

@dataclass
class CheckpointerConfig:
    _target_: str = "some_library_class"
    data_dir: str = "folder"

@dataclass
class TrainerConfig:
   callbacks: List[Any] = MISSING

和配置存储:

cs = ConfigStore.instance()
cs.store(group="trainer_lib/callbacks", name="base_checkpointer", node=CheckpointerConfig)

我不确定完成此操作的正确语法是什么(我尝试过的方法失败了)。我得到一个omegaconf.errors.ConfigTypeError: Cannot merge DictConfig with ListConfig.

有没有办法做到这一点?谢谢。

4

2 回答 2

1

在这个Hydra 问题上讨论这个话题。

于 2021-02-10T20:35:16.690 回答
0

你在 Hydra 1.0 上吗?这实际上在 Hydra 1.1 中得到支持。这是文档:https ://hydra.cc/docs/next/patterns/select_multiple_configs_from_config_group

于 2021-02-08T18:46:16.973 回答