Hydra:从代码访问配置文件的名称
Hydra: access name of config file from code
我有一个配置树,例如:
config.yaml
model/
model_a.yaml
model_b.yaml
model_c.yaml
其中 config.yaml
包含:
# @package _global_
defaults:
- _self_
- model: model_a.yaml
some_var: 42
我想从我的 python 代码或文件本身访问所使用的模型配置文件的名称(默认或覆盖)。类似于:
@hydra.main(...)
def main(config):
model_name = config.model.__filename__
或(来自例如 model_a.yaml
)
dropout: true
dense_layers: 128
model_name: ${__filename__}
提前致谢!
查看 Hydra 文档的 hydra.runtime.choices variable mentioned in the Configuring Hydra - Introduction 页面。
此变量存储一个映射,该映射描述了 Hydra 在编写输出配置时所做的每个选择。
使用上面的示例,默认列表中有 model: model_a.yaml
:
# my_app.py
import hydra
from pprint import pprint
from hydra.core.hydra_config import HydraConfig
from omegaconf import OmegaConf
@hydra.main(config_path=".", config_name="config")
def main(config):
hydra_cfg = HydraConfig.get()
print("choice of model:")
pprint(OmegaConf.to_container(hydra_cfg.runtime.choices))
main()
在命令行:
$ python3 app.py
choices used:
{'hydra/callbacks': None,
'hydra/env': 'default',
'hydra/help': 'default',
'hydra/hydra_help': 'default',
'hydra/hydra_logging': 'default',
'hydra/job_logging': 'default',
'hydra/launcher': 'basic',
'hydra/output': 'default',
'hydra/sweeper': 'basic',
'model': 'model_a.yaml'}
如您所见,在此示例中,配置选项 model_a.yaml
存储在位于 hydra_cfg.runtime.choices.model
的 Hydra 配置中。
我有一个配置树,例如:
config.yaml
model/
model_a.yaml
model_b.yaml
model_c.yaml
其中 config.yaml
包含:
# @package _global_
defaults:
- _self_
- model: model_a.yaml
some_var: 42
我想从我的 python 代码或文件本身访问所使用的模型配置文件的名称(默认或覆盖)。类似于:
@hydra.main(...)
def main(config):
model_name = config.model.__filename__
或(来自例如 model_a.yaml
)
dropout: true
dense_layers: 128
model_name: ${__filename__}
提前致谢!
查看 Hydra 文档的 hydra.runtime.choices variable mentioned in the Configuring Hydra - Introduction 页面。 此变量存储一个映射,该映射描述了 Hydra 在编写输出配置时所做的每个选择。
使用上面的示例,默认列表中有 model: model_a.yaml
:
# my_app.py
import hydra
from pprint import pprint
from hydra.core.hydra_config import HydraConfig
from omegaconf import OmegaConf
@hydra.main(config_path=".", config_name="config")
def main(config):
hydra_cfg = HydraConfig.get()
print("choice of model:")
pprint(OmegaConf.to_container(hydra_cfg.runtime.choices))
main()
在命令行:
$ python3 app.py
choices used:
{'hydra/callbacks': None,
'hydra/env': 'default',
'hydra/help': 'default',
'hydra/hydra_help': 'default',
'hydra/hydra_logging': 'default',
'hydra/job_logging': 'default',
'hydra/launcher': 'basic',
'hydra/output': 'default',
'hydra/sweeper': 'basic',
'model': 'model_a.yaml'}
如您所见,在此示例中,配置选项 model_a.yaml
存储在位于 hydra_cfg.runtime.choices.model
的 Hydra 配置中。