在配置中调用 hydra.utils.instantiate

Call hydra.utils.instantiate inside configuration

以下作品:

trainer = pl.Trainer(early_stop_callback=hydra.utils.instantiate(cfg.callbacks.early_stopping),
                     **cfg.trainer)

但它使 early_stopping 成为必需的参数。有没有更好的方法或方法在配置中使用类似于以下的内容来指定所有这些?

$ cat trainer.yaml
trainer:
  cls: pytorch_lightning.Trainer
  params:
    early_stop_callback: instantiate(cfg.callbacks.early_stopping)

这样我可以做:

trainer = hydra.utils.instantiate(cfg.trainer)

Hydra 目前不支持递归实例化。 不过,这是为下一个主要版本计划的,请遵循 this issue.

Hydra 1.1.0 (2021-06-09) 现在支持递归实例化,参见CHANGELOG, and in particular this issue