in parlai/scripts/generate_model_card.py [0:0]
def hyperparameters(self):
if self.verbose:
extra_special_print("model_opt:", color='yellow')
self.model_opt.log()
# note: use compare init model later to show all the differences
# try to check for init model and see if there are any differences
try:
self.init_model = Opt.load(self.model_opt['init_model'])
extra_func = self._check_init_model_keys
maybe_keys = ['dropout']
except Exception:
maybe_keys = []
extra_func = None
# get list of dropdowns + the top one
not_dropdowns = ['always_include', 'always_exclude', 'maybe_special']
dropdowns = [k for k in self.hyperparams if k not in not_dropdowns]
dropdowns.insert(0, 'top_not_dropdown')
if self.opt['include_misc']:
dropdowns.append('miscellaneous')
# keys to exclude + remove any values with '/'
tmp = [k for k, v in self.model_opt.items() if v and '/' not in str(v)]
rest_keys = set(tmp)
always_exclude = self.hyperparams.get('always_exclude', ())[OTHER]
rest_keys.difference_update(always_exclude)
all_content = []
# adding dropdowns, the top part, and miscellaneous
# using _search_make_li
for title in dropdowns:
values = self.hyperparams.get(title)
if title == 'top_not_dropdown':
special = self.hyperparams['maybe_special'][OTHER]
keys = self.hyperparams['always_include'][OTHER] + list(special.keys())
default_value = 'Not specified'
process_func = [None] * (len(keys)) + [extra_func] * len(maybe_keys)
process_func += [special[k] for k in keys[-len(special) :]]
elif title != 'miscellaneous':
common, keys = values
if common is None or common == 'None':
commmon_keys = []
elif callable(common):
commmon_keys = [key for key in rest_keys if common(key)]
else:
commmon_keys = [key for key in rest_keys if common in key]
keys.extend(commmon_keys)
default_value = None
process_func = [None] * len(keys)
else:
# micellaneous; should be last
keys = rest_keys
default_value = None
process_func = [None] * len(keys)
L = len(keys)
default_values = [default_value] * L
before_value = [f'`{key}`: `' for key in keys]
after_value = ['`'] * L
struct = zip(keys, default_values, before_value, after_value, process_func)
content = [self._search_make_li(item, warning=False) for item in struct]
content = list(filter(None, content))
if len(content) > 0 and title != 'top_not_dropdown':
all_content.append(create_dropdown(title, content))
else:
all_content.insert(0, '\n'.join(content))
rest_keys.difference_update(keys)
return '\n'.join(all_content)