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'>)
- 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にしないための小さい値
- 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にするか