dream
64 строки · 1.8 Кб
1import copy2
3
4def make_name_string(dict_, final=False, do_epoch=False, set_epoch=None):5if final:6if not do_epoch:7string = "{}_{}_{}".format(dict_.lr, dict_.optim, dict_.bs)8elif set_epoch is not None:9string = "{}_{}_{}_{}".format(dict_.lr, dict_.optim, dict_.bs, set_epoch)10else:11string = "{}_{}_{}_{}".format(dict_.lr, dict_.optim, dict_.bs, dict_.epoch)12
13return string14
15string = ""16
17for k, v in dict_.items():18if type(v) == DD:19continue20if isinstance(v, list):21val = "#".join(is_bool(str(vv)) for vv in v)22else:23val = is_bool(v)24if string:25string += "-"26string += "{}_{}".format(k, val)27
28return string29
30
31def is_bool(v):32check_is_bool = {"False": "F", "True": "T"}33return check_is_bool.get(str(v), v)34
35
36# Taken from Jobman 0.1
37class DD(dict):38def __getattr__(self, attr):39if attr == "__getstate__":40return super(DD, self).__getstate__41elif attr == "__setstate__":42return super(DD, self).__setstate__43elif attr == "__slots__":44return super(DD, self).__slots__45return self[attr]46
47def __setattr__(self, attr, value):48# Safety check to ensure consistent behavior with __getattr__.49assert attr not in ("__getstate__", "__setstate__", "__slots__")50# if attr.startswith('__'):51# return super(DD, self).__setattr__(attr, value)52self[attr] = value53
54def __str__(self):55return "DD%s" % dict(self)56
57def __repr__(self):58return str(self)59
60def __deepcopy__(self, memo):61z = DD()62for k, kv in self.items():63z[k] = copy.deepcopy(kv, memo)64return z65