带有“hydra”的命令行参数
command line args with `hydra`
将配置传递给 hydra
的标准口头禅是用 @hydra.main
修饰,然后定义 main(cfg)
,然后在 main
块中调用 main
没有参数。但是假设我也想接受非 hydra 命令行参数,所以想同时传递参数和配置?这是否被视为道德不纯和令人气馁?这是我的意思的例子(它不起作用)(它错误地声称它缺少 cfg
参数)。
from omegaconf import DictConfig, OmegaConf
import hydra
@hydra.main(version_base=None)
def my_app(foo, cfg: DictConfig) -> None:
print(foo)
print(OmegaConf.to_yaml(cfg))
if __name__ == "__main__":
my_app(5)
这是不支持的。
原则上,在组成配置之前,您没有任何东西可以为 5
参数设置不同的值。
如果你想在编写配置之前有额外的逻辑,请查看 Compose API 作为 @hydra.main()
的替代(或附加)。
将配置传递给 hydra
的标准口头禅是用 @hydra.main
修饰,然后定义 main(cfg)
,然后在 main
块中调用 main
没有参数。但是假设我也想接受非 hydra 命令行参数,所以想同时传递参数和配置?这是否被视为道德不纯和令人气馁?这是我的意思的例子(它不起作用)(它错误地声称它缺少 cfg
参数)。
from omegaconf import DictConfig, OmegaConf
import hydra
@hydra.main(version_base=None)
def my_app(foo, cfg: DictConfig) -> None:
print(foo)
print(OmegaConf.to_yaml(cfg))
if __name__ == "__main__":
my_app(5)
这是不支持的。
原则上,在组成配置之前,您没有任何东西可以为 5
参数设置不同的值。
如果你想在编写配置之前有额外的逻辑,请查看 Compose API 作为 @hydra.main()
的替代(或附加)。