jyliuAI's picture
Add files using upload-large-folder tool
069761e verified
Raw History Blame Contribute Delete
1.56 kB
import numpy as np
import numpy.linalg as linalg
import torch
def flatten_dict(dd, separator ='*', prefix =''):
"""
https://www.geeksforgeeks.org/python-convert-nested-dictionary-into-flattened-dictionary/
"""
return { str(prefix) + separator + str(k) if prefix != '' else str(k) : v
for kk, vv in dd.items()
for k, v in flatten_dict(vv, separator, kk).items()
} if isinstance(dd, dict) else { prefix : dd }
def set_in_nested_dict(nested_dict, keys, new_val):
"""
Sets a value in a nested dictionary (or ml_collections config)
e.g.
nested_dict = \
{
'outer1': {
'inner1': 4,
'inner2': 5
},
'outer2': {
'inner3': 314,
'inner4': 654
}
}
keys = ['outer2', 'inner3']
new_val = 315
"""
if len(keys) == 1:
nested_dict[keys[-1]] = new_val
return
return set_in_nested_dict(nested_dict[keys[0]], keys[1:], new_val)
def is_model_state_DDP(dict):
for key in dict.keys():
if '.module.' in key:
return True
return False
def remove_module_from_keys(dict):
# dict has keys of the form a.b.module.c.d
# changes to a.b.c.d
new_dict = {}
for key in dict.keys():
if '.module.' in key:
new_key = key.replace('.module.', '.')
new_dict[new_key] = dict[key]
else:
new_dict[key] = dict[key]
return new_dict