【问题标题】:How to set up hydra config to accept a custom enum?如何设置 hydra 配置以接受自定义枚举?
【发布时间】:2022-01-19 05:28:45
【问题描述】:

如何设置我的 hydra 配置以接受自定义枚举?具体来说,我关注了Structured Config Schema tutorial

我有一个数据类配置:

@dataclass_validate
@dataclass
class CustomConfig:
    custom_enum: CustomEnum

使用自定义枚举:

class CustomEnum(str, Enum):
    ENUM1 = "enum1"
    ENUM2 = "enum2"

运行python my_app.py时出错

Error merging 'data/config' with schema
Invalid value 'enum1', expected one of [ENUM1, ENUM2]
    full_key: custom_enum
    object_type=CustomConfig

my_app.py 只是:

cs = ConfigStore.instance()
cs.store(name="base_config", node=Config)
cs.store(group="data", name="config", node=CustomConfig)

@hydra.main(config_path=".", config_name="config")
def setup_config(cfg: Config) -> None:
    print(OmegaConf.to_yaml(cfg))

data/config.yaml 中的配置只是

custom_enum: enum1

【问题讨论】:

  • 请注意:OmegaConf 和 Hydra 目前没有任何测试覆盖同时为 strEnum 子类的类,就像上面的 CustomEnum 一样。

标签: fb-hydra hydra-python omegaconf


【解决方案1】:

注意错误信息:Invalid value 'enum1', expected one of [ENUM1, ENUM2]

也就是说,在您的data/config.yaml 文件中,您应该使用ENUM1 而不是enum1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多