所以,我有一个 hydra 模型配置(autoencoder.yaml)定义为:
_target_: student.models.AutoEncoder
defaults:
- dataloader: msa
- encoder: default_encoder
- decoder: vae_decoder
- scheduler: null
- optimizer: adam
- preprocessing: null
batch_size: 256
现在在编码器文件夹中,我有以下 YAML 配置:
- default_encoder.yaml
- vae_encoder.yaml
我的基本配置文件如下:
# @package _global_
defaults:
- _self_
- model: autoencoder.yaml
# enable color logging
- override hydra/hydra_logging: colorlog
- override hydra/job_logging: colorlog
work_dir: ${hydra:runtime.cwd}
seed: null
name: "default"
现在,我可以这样称呼它:
python myapp.py seed=42 #works
但是当我做类似的事情时:
python myapp.py ++model.encoder=vae_encoder
它带有错误:
Top level config has to be OmegaConf DictConfig, plain dict, or a Structured Config class or instance
我怎样才能通过 hydra 组合替换底层对象?基本上,当我这样做时++model.encoder=vae_encoder
,它会将其替换为字符串,而不是引用 yaml 文件