U lxd@szddlZddlZddlZddlZddlZdddZGdddeZdd Zd d Z d d Z ddZ dddZ dddZ dS)NFTcsg}d} t|D]\} } } | D]ʉtfdd|Dr tj| } |r`| t|ddn| }|dk r| |kr|r||S|dk r||krq |dk r||krq |s|dd}|dt|d }||| d7} q q|r||S)Nrcsg|]}d|qS).)endswith).0extfile(D:\so-vits-svc\diffusion\logger\utils.py sz traverse_dir..r) oswalkanypathjoinlensortsplitappend)root_dir extensionsamountZ str_includeZ str_excludeZis_pureZis_sortis_extZ file_listZcntroot_filesZmix_pathZ pure_pathrrrr traverse_dirs.    rc@s eZdZddZejZejZdS)DotDictcGs"tj|}t|tkrt|S|SN)dictgettyper)argsvalrrr __getattr__2s zDotDict.__getattr__N) __name__ __module__ __qualname__r%r __setitem__ __setattr__ __delitem__ __delattr__rrrr r1srcCs:t}|D]&\}}tdd|D}|||<q|S)Ncss|]}|jr|VqdSr) requires_gradZnumel)rprrr >sz+get_network_paras_amount..)r itemssumZ parameters)Z model_dictinfoZ model_namemodelZtrainable_paramsrrr get_network_paras_amount:s  r4c Cs,t|d}t|}W5QRXt|}|S)Nr)openyamlZ safe_loadr) path_configconfigr#rrr load_configDs r:c Cs.t|}t|d}t||W5QRXdS)Nw)r r6r7dump)r8r9frrr save_configKs r>c Csltj|tdd}i}|D] \}}|}|||<q t|d}tj ||ddW5QRXdS)NcpuZ map_locationr; )indent) torchloaddevicer0Zflattennumpytolistr6jsonr<)Z path_paramsZ path_jsonparamsZraw_state_dictkvr$Zoutfilerrr to_jsonPs  rLcCs0|r |}|jr|}|jr(|}|Sr)Zsqueezer-detachZis_cudar?rF)ZtensorZ is_squeezerrr convert_tensor_to_numpy[srNr3r?c s|dkrd|}tj|||t|dgdd}d}t|dkr܇fdd|D}td d|D} | dkrt| d }nd }td |tj |t |d } | d}|j | ddd| ddkr| | d|||fS)NrOrptF)rrcsg|]}|tdqSr)rrsrrr r rszload_model..cSs g|]}|rt|ndqS)r)isdigitintrQrrr r ssz.ptzbest.ptz [*] restoring model fromr@ global_stepr3)strict optimizer) r rrrrmaxstrprintrCrDrEZload_state_dictr!) Zexpdirr3rXnamepostfixrEZpath_ptrVZstepsZmaxstepZckptrrSr load_modeles$  r^)NNNFFT)T)r3rOr?)r r7rHpicklerCrr rr4r:r>rLrNr^rrrr s* *