从命令行扩展 omegaconf 中的列表

Extend list in omegaconf from command line

我有一个来自 yaml 文件的类似配置

training_variables:
   - var1
   - var2

我想使用附加变量扩展列表,并且我想从命令行执行此操作。怎么做?这似乎不可能,但我认为如果您想尝试一个新的设置而不每次都更改配置文件,它会非常有用。我想知道这样的事情:

train.py training_variables=$training_variables+['var3']

这不受支持,并且不打算以您请求的形式提供支持。

一个实用的解决方案是将您的列表拆分为两个变量并在代码中将它们连接起来。

base_list:
 - a
 - b
extra_list: []

train.py:

  ...
  combined_list = cfg.base_list + cfg.extra_list
  ...
$ python train.py 'extra_list=[c,d,e]'

我不是 100% 确定上面的命令行可以与直接使用 OmegaConf 的应用程序一起使用,但它应该可以与 Hydra 1.0 或更新版本一起使用。