Source code for torchrl.utils.memories.common_memories

from collections import defaultdict


[docs]class SimpleMemory(dict): """ A dict whose keys can be accessed as attributes. Parameters ---------- initial_keys: list of strings Each key will be initialized as an empty list. """ def __init__(self, *args, initial_keys=None, **kwargs): super().__init__(*args, **kwargs) initial_keys = initial_keys or [] for k in initial_keys: self[k] = [] def __setattr__(self, *args, **kwargs): return self.__setitem__(*args, **kwargs) def __getattr__(self, *args, **kwargs): return self.__getitem__(*args, **kwargs) @classmethod def from_list_of_dicts(cls, dicts): return cls({k: [d[k] for d in dicts] for k in dicts[0]})
[docs]class DefaultMemory(defaultdict): """ A defaultdict whose keys can be accessed as attributes. """ def __init__(self, *args, **kwargs): super().__init__(list, *args, **kwargs) def __setattr__(self, *args, **kwargs): return self.__setitem__(*args, **kwargs) def __getattr__(self, *args, **kwargs): return super().__getitem__(*args, **kwargs)