in options/base_config.py [0:0]
def parse(self, override_config=None, verbose=True):
if not self.initialized:
parser = argparse.ArgumentParser()
parser = self.initialize(parser)
opt, unknown = parser.parse_known_args()
if override_config is not None:
# prioritize override_config if it exists
base_config = OmegaConf.load(override_config.base_config)
# also override the argparse so that checkpoint paths get loaded properly
if 'resume_from_path' in override_config.keys():
opt.resume_from_path = override_config['resume_from_path']
else:
# otherwise grab the base config file from cli args, or argparse default
base_config = OmegaConf.load(opt.base_config)
override_config = OmegaConf.create() # make empty config
# config from previosuly trained model checkpoint
checkpoint_config, opt = self.get_config_from_checkpoint(opt)
# config from argparse
argparse_config = OmegaConf.create(vars(opt))
# unknown args from command line (will override base config file)
# should be in dot-list format: https://omegaconf.readthedocs.io/en/2.1_branch/usage.html#from-a-dot-list
cli_config = OmegaConf.from_dotlist(unknown)
# configs to the right take priority over configs to the left during merge
config = OmegaConf.merge(base_config, checkpoint_config, argparse_config, cli_config, override_config)
if verbose:
print('')
print('----------------- Config ---------------\n')
print(OmegaConf.to_yaml(config))
print('------------------- End ----------------\n')
print('')
return config