Alnitak
Alnitak

Reputation: 2489

Hydra: how to use variable interpolation in packaged configs

I have some config file, model/foo.yaml:

# @package _global_
# foo.yaml
MODEL:
  BACKBONE:
    OUT_FEATURES: [c4, c5]
  HEAD:
    IN_FEATURES: ${MODEL.BACKBONE.OUT_FEATURES}

There are no issues with variable interpolation when I point to this config in the defaults-list of another config, eg buzz.yaml, except when I also override the package like so:

# buzz.yaml
defaults:
  - model@foo_head: foo

Attempting to compose buzz.yaml, you will get an error like:

omegaconf.errors.InterpolationKeyError: Interpolation key 'MODEL.BACKBONE.OUT_FEATURES' not found

Can variable interpolation not be used in configs when packaging?

Upvotes: 2

Views: 6626

Answers (1)

Omry Yadan
Omry Yadan

Reputation: 33646

Yes. OmegaConf supports relative interpolation.

MODEL:
  BACKBONE:
    OUT_FEATURES: [c4, c5]
  HEAD:
    IN_FEATURES: ${..BACKBONE.OUT_FEATURES}

I strongly recommend that you read the docs of OmegaConf.

Upvotes: 3

Related Questions