Memory

SequenceMemory

class srl.rl.memories.sequence_memory.SequenceMemory(*args)

FIFO形式でやりとりするシンプルなメモリです。 パラメータは特にありません。 圧縮は行いません。

ExperienceReplayBuffer

class srl.rl.memories.experience_replay_buffer.RLConfigComponentExperienceReplayBuffer(batch_size: int = 32, memory_capacity: int = 100000, memory_warmup_size: int = 1000, memory_compress: bool = True, memory_compress_level: int = -1)

ExperienceReplayBuffer

これを継承しているアルゴリズムはbatch_size変数とmemory変数を持ちます。 memory変数からパラメータを設定できます。

Parameter:

capacity(int): メモリに保存できる最大サイズ. default is 100_000 warmup_size(int): warmup size. default is 1_000 batch_size(int): Batch size. default is 32

サンプル

>>> from srl.algorithms import alphazero
>>> rl_config = alphazero.Config()
>>> rl_config.batch_size = 64
>>> rl_config.memory_capacity = 1000
>>> rl_config.memory_warmup_size = 1000
batch_size: int = 32

Batch size

memory_capacity: int = 100000

capacity

memory_warmup_size: int = 1000

warmup_size

memory_compress: bool = True

memoryデータを圧縮してやり取りするかどうか

memory_compress_level: int = -1

memory(zlib)の圧縮レベル

PriorityExperienceReplay

class srl.rl.memories.priority_experience_replay.RLConfigComponentPriorityExperienceReplay(batch_size: int = 32, memory_capacity: int = 100000, memory_warmup_size: int = 1000, memory_compress: bool = True, memory_compress_level: int = -1)

PriorityExperienceReplay

これを継承しているアルゴリズムはbatch_size変数とmemory変数を持ちます。 memory変数から関数を呼ぶことで各memoryを設定できます。 また、memory変数から任意のパラメータを設定できます。

サンプル

>>> from srl.algorithms import dqn
>>> rl_config = dqn.Config()
>>>
>>> # 各パラメータの設定例
>>> rl_config.batch_size = 64
>>> rl_config.memory_capacity = 10000
>>> rl_config.memory_warmup_size = 10
>>>
>>> # ProportionalMemory の設定例
>>> rl_config.set_proportional_memory()
batch_size: int = 32

Batch size

memory_capacity: int = 100000

capacity

memory_warmup_size: int = 1000

warmup_size

memory_compress: bool = True

memoryデータを圧縮してやり取りするかどうか

memory_compress_level: int = -1

memory(zlib)の圧縮レベル

class srl.rl.memories.priority_memories.replay_memory.ReplayMemory(capacity: int, dtype: type = <class 'numpy.float32'>)
dtype

:py:class:`~numpy.float32`の別名です。

class srl.rl.memories.priority_memories.proportional_memory.ProportionalMemory(capacity: int, alpha: float = 0.6, beta_initial: float = 0.4, beta_steps: int = 1000000, has_duplicate: bool = True, epsilon: float = 0.0001, dtype: type = <class 'numpy.float32'>)
alpha: float = 0.6

priorityの反映度、0の場合は完全ランダム、1に近づくほどpriorityによるランダム度になります。

beta_initial: float = 0.4

βはISを反映させる割合。ただβは少しずつ増やし、最後に1(完全反映)にします。そのβの初期値です。

beta_steps: int = 1000000

βを何stepで1にするか

has_duplicate: bool = True

sample時に重複をきょかするか

epsilon: float = 0.0001

priorityを0にしないための小さい値

dtype

:py:class:`~numpy.float32`の別名です。

class srl.rl.memories.priority_memories.rankbase_memory.RankBaseMemory(capacity: int = 100000, alpha: float = 0.6, beta_initial: float = 0.4, beta_steps: int = 1000000, dtype: type = <class 'numpy.float32'>)
alpha: float = 0.6

priorityの反映度、0の場合は完全ランダム、1に近づくほどpriorityによるランダム度になります。

beta_initial: float = 0.4

βはISを反映させる割合。ただβは少しずつ増やし、最後に1(完全反映)にします。そのβの初期値です。

beta_steps: int = 1000000

βを何stepで1にするか

dtype

:py:class:`~numpy.float32`の別名です。

class srl.rl.memories.priority_memories.rankbase_memory_linear.RankBaseMemoryLinear(capacity: int = 100000, alpha: float = 1.0, beta_initial: float = 0.4, beta_steps: int = 1000000, dtype: type = <class 'numpy.float32'>)
dtype

:py:class:`~numpy.float32`の別名です。