:py:mod:`rofunc.learning.RofuncRL.utils.memory`
===============================================

.. py:module:: rofunc.learning.RofuncRL.utils.memory

.. autodoc2-docstring:: rofunc.learning.RofuncRL.utils.memory
   :allowtitles:

Module Contents
---------------

Classes
~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`Memory <rofunc.learning.RofuncRL.utils.memory.Memory>`
     - .. autodoc2-docstring:: rofunc.learning.RofuncRL.utils.memory.Memory
          :summary:
   * - :py:obj:`RandomMemory <rofunc.learning.RofuncRL.utils.memory.RandomMemory>`
     - .. autodoc2-docstring:: rofunc.learning.RofuncRL.utils.memory.RandomMemory
          :summary:

API
~~~

.. py:class:: Memory(memory_size: int, num_envs: int = 1, device: typing.Optional[typing.Union[str, torch.device]] = None, export: bool = False, export_format: str = 'pt', export_directory: str = '')
   :canonical: rofunc.learning.RofuncRL.utils.memory.Memory

   .. autodoc2-docstring:: rofunc.learning.RofuncRL.utils.memory.Memory

   .. rubric:: Initialization

   .. autodoc2-docstring:: rofunc.learning.RofuncRL.utils.memory.Memory.__init__

   .. py:method:: share_memory() -> None
      :canonical: rofunc.learning.RofuncRL.utils.memory.Memory.share_memory

      .. autodoc2-docstring:: rofunc.learning.RofuncRL.utils.memory.Memory.share_memory

   .. py:method:: get_tensor_names() -> typing.Tuple[str]
      :canonical: rofunc.learning.RofuncRL.utils.memory.Memory.get_tensor_names

      .. autodoc2-docstring:: rofunc.learning.RofuncRL.utils.memory.Memory.get_tensor_names

   .. py:method:: get_tensor_by_name(name: str, keepdim: bool = True) -> torch.Tensor
      :canonical: rofunc.learning.RofuncRL.utils.memory.Memory.get_tensor_by_name

      .. autodoc2-docstring:: rofunc.learning.RofuncRL.utils.memory.Memory.get_tensor_by_name

   .. py:method:: set_tensor_by_name(name: str, tensor: typing.Union[torch.Tensor, rofunc.learning.RofuncRL.processors.standard_scaler.RunningStandardScaler]) -> None
      :canonical: rofunc.learning.RofuncRL.utils.memory.Memory.set_tensor_by_name

      .. autodoc2-docstring:: rofunc.learning.RofuncRL.utils.memory.Memory.set_tensor_by_name

   .. py:method:: create_tensor(name: str, size: typing.Union[int, typing.Tuple[int], gym.Space, gymnasium.Space], dtype: typing.Optional[torch.dtype] = None, keep_dimensions: bool = False) -> bool
      :canonical: rofunc.learning.RofuncRL.utils.memory.Memory.create_tensor

      .. autodoc2-docstring:: rofunc.learning.RofuncRL.utils.memory.Memory.create_tensor

   .. py:method:: reset() -> None
      :canonical: rofunc.learning.RofuncRL.utils.memory.Memory.reset

      .. autodoc2-docstring:: rofunc.learning.RofuncRL.utils.memory.Memory.reset

   .. py:method:: add_samples(**tensors: torch.Tensor) -> None
      :canonical: rofunc.learning.RofuncRL.utils.memory.Memory.add_samples

      .. autodoc2-docstring:: rofunc.learning.RofuncRL.utils.memory.Memory.add_samples

   .. py:method:: sample(names: typing.Union[typing.Tuple[str], typing.List[str]], batch_size: int, mini_batches: int = 1, sequence_length: int = 1) -> typing.List[typing.List[torch.Tensor]]
      :canonical: rofunc.learning.RofuncRL.utils.memory.Memory.sample
      :abstractmethod:

      .. autodoc2-docstring:: rofunc.learning.RofuncRL.utils.memory.Memory.sample

   .. py:method:: sample_by_index(names: typing.Tuple[str], indexes: typing.Union[tuple, numpy.ndarray, torch.Tensor], mini_batches: int = 1) -> typing.List[typing.List[torch.Tensor]]
      :canonical: rofunc.learning.RofuncRL.utils.memory.Memory.sample_by_index

      .. autodoc2-docstring:: rofunc.learning.RofuncRL.utils.memory.Memory.sample_by_index

   .. py:method:: sample_all(names: typing.List[str], mini_batches: int = 1, sequence_length: int = 1) -> typing.List[typing.List[torch.Tensor]]
      :canonical: rofunc.learning.RofuncRL.utils.memory.Memory.sample_all

      .. autodoc2-docstring:: rofunc.learning.RofuncRL.utils.memory.Memory.sample_all

   .. py:method:: get_sampling_indexes() -> typing.Union[tuple, numpy.ndarray, torch.Tensor]
      :canonical: rofunc.learning.RofuncRL.utils.memory.Memory.get_sampling_indexes

      .. autodoc2-docstring:: rofunc.learning.RofuncRL.utils.memory.Memory.get_sampling_indexes

   .. py:method:: save(directory: str = '', format: str = 'pt') -> None
      :canonical: rofunc.learning.RofuncRL.utils.memory.Memory.save

      .. autodoc2-docstring:: rofunc.learning.RofuncRL.utils.memory.Memory.save

   .. py:method:: load(path: str) -> None
      :canonical: rofunc.learning.RofuncRL.utils.memory.Memory.load

      .. autodoc2-docstring:: rofunc.learning.RofuncRL.utils.memory.Memory.load

.. py:class:: RandomMemory(memory_size: int, num_envs: int = 1, device: typing.Optional[typing.Union[str, torch.device]] = None, export: bool = False, export_format: str = 'pt', export_directory: str = '', replacement=True)
   :canonical: rofunc.learning.RofuncRL.utils.memory.RandomMemory

   Bases: :py:obj:`rofunc.learning.RofuncRL.utils.memory.Memory`

   .. autodoc2-docstring:: rofunc.learning.RofuncRL.utils.memory.RandomMemory

   .. rubric:: Initialization

   .. autodoc2-docstring:: rofunc.learning.RofuncRL.utils.memory.RandomMemory.__init__

   .. py:method:: sample(names: typing.Tuple[str], batch_size: int, mini_batches: int = 1, sequence_length: int = 1) -> typing.List[typing.List[torch.Tensor]]
      :canonical: rofunc.learning.RofuncRL.utils.memory.RandomMemory.sample

      .. autodoc2-docstring:: rofunc.learning.RofuncRL.utils.memory.RandomMemory.sample
