[docs]defmake_copy(obj:Any)->Any:"""Makes a copy of the objects."""ifisinstance(obj,np.ndarray):returnobj.copy()ifisinstance(obj,tuple):returntuple(make_copy(_)for_inobj)ifisinstance(obj,list):return[make_copy(_)for_inobj]ifisinstance(obj,dict):return{k:make_copy(v)fork,vinobj.items()}ifhasattr(obj,"clone"):returnobj.clone()ifobj.__class__.__name__=="DynamicCache":returntorch_deepcopy(obj)try:returncopy.deepcopy(obj)exceptRuntimeErrorase:raiseRuntimeError(f"deepcopy did not work on type {type(obj)}: {string_type(obj)}")frome