# -*- coding: utf-8 -*- from yacs.config import CfgNode from .module_base import ModuleBase from .registry import Registry def get_config_from_registry(registry: Registry) -> CfgNode: """ Collect all hyper-parameters from modules in registry. Args: registry (Registry): module registry. Returns: cfg (CfgNode): configurations for this registry. """ cfg = CfgNode() for name in registry: cfg[name] = CfgNode() loss = registry[name] hps = loss.default_hyper_params for hp_name in hps: cfg[name][hp_name] = hps[hp_name] return cfg def simple_build(name: str, cfg: CfgNode, registry: Registry, **kwargs): """ Simply build a module according to name and hyper-parameters. Args: name (str): name for instance to be built. cfg (CfgNode): configurations for this sub-module. registry (Registry): registry for this sub-module. **kwargs: keyword arguments. Returns: module: a initialized instance """ assert name in registry module = registry[name] hps = module.default_hyper_params for hp_name in hps: new_value = cfg[name][hp_name] hps[hp_name] = new_value return module(hps=hps, **kwargs)