微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在命令行中指定配置名称时,Hydra 运行时类型检查不起作用

如何解决在命令行中指定配置名称时,Hydra 运行时类型检查不起作用

以下代码片段在没有任何参数的情况下运行脚本时按预期工作(由于配置中缺少参数,执行停止):

if __name__ == '__main__':

    config_name = "csv_images_test"

    cs = ConfigStore.instance()
    cs.store(name=config_name,node=Config)

    @hydra.main(config_path="/hdd/twapi/configs/",config_name=config_name)
    def main(cfg: Config) -> None:
        print(OmegaConf.to_yaml(cfg))

    main()

然而,当我通过命令行指定这个配置名称时,似乎没有进行类型检查:

python /hdd/twapi/src/config_structure.py --config-name=/hdd/twapi/configs/csv_images_test.yaml

解决方法

在 Hydra 1.0 中,配置和匹配模式之间的匹配在它们共享相同名称时自动发生。 这被记录在here

仍在开发中的 Hydra 1.1 改变了这种行为,支持更灵活地使用默认列表来匹配架构和配置。 见this

这是可能的,因为 Hydra 1.1 中实现了新的默认列表,它支持任意配置中的默认列表,而不仅仅是主要配置。

了解更多信息here

您可以尝试 Hydra 1.1 开发版本(最新版本是 1.1.0dev4)。有关安装说明,请参阅 Hydra 的主要自述文件。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。