d3rlpy.dataset.MixedReplayBuffer

class d3rlpy.dataset.MixedReplayBuffer(primary_replay_buffer, secondary_replay_buffer, secondary_mix_ratio)[source]

A class combining two replay buffer instances.

This replay buffer implementation combines two replay buffers (e.g. offline buffer and online buffer). The primary replay buffer is exposed to methods such as append. Mini-batches are sampled from each replay buffer based on secondary_mix_ratio.

import d3rlpy

# offline dataset
dataset, env = d3rlpy.datasets.get_cartpole()

# online replay buffer
online_buffer = d3rlpy.dataset.create_fifo_replay_buffer(
    limit=100000,
    env=env,
)

# combine two replay buffers
replay_buffer = d3rlpy.dataset.MixedReplayBuffer(
    primary_replay_buffer=online_buffer,
    secondary_replay_buffer=dataset,
    secondary_mix_ratio=0.5,
)
Parameters

Methods

append(observation, action, reward)[source]

Appends observation, action and reward to buffer.

Parameters
Return type

None

append_episode(episode)[source]

Appends episode to buffer.

Parameters

episode (d3rlpy.dataset.components.EpisodeBase) – Episode.

Return type

None

clip_episode(terminated)[source]

Clips current episode.

Parameters

terminated (bool) – Flag to represent environmental termination. This flag should be False if the episode is terminated by timeout.

Return type

None

dump(f)[source]

Dumps buffer data.

with open('dataset.h5', 'w+b') as f:
    replay_buffer.dump(f)
Parameters

f (BinaryIO) – IO object to write to.

Return type

None

classmethod from_episode_generator(episode_generator, buffer, transition_picker=None, trajectory_slicer=None, writer_preprocessor=None)[source]

Builds ReplayBuffer from episode generator.

Parameters
Returns

Replay buffer.

Return type

d3rlpy.dataset.replay_buffer.ReplayBuffer

classmethod load(f, buffer, episode_cls=<class 'd3rlpy.dataset.components.Episode'>, transition_picker=None, trajectory_slicer=None, writer_preprocessor=None)[source]

Builds ReplayBuffer from dumped data.

This method reconstructs replay buffer dumped by dump method.

with open('dataset.h5', 'rb') as f:
    replay_buffer = ReplayBuffer.load(f, buffer)
Parameters
Returns

Replay buffer.

Return type

d3rlpy.dataset.replay_buffer.ReplayBuffer

sample_trajectory(length)[source]

Samples a partial trajectory.

Parameters

length (int) – Length of partial trajectory.

Returns

Partial trajectory.

Return type

d3rlpy.dataset.components.PartialTrajectory

sample_trajectory_batch(batch_size, length)[source]

Samples a mini-batch of partial trajectories.

Parameters
  • batch_size (int) – Mini-batch size.

  • length (int) – Length of partial trajectories.

Returns

Mini-batch.

Return type

d3rlpy.dataset.mini_batch.TrajectoryMiniBatch

sample_transition()[source]

Samples a transition.

Returns

Transition.

Return type

d3rlpy.dataset.components.Transition

sample_transition_batch(batch_size)[source]

Samples a mini-batch of transitions.

Parameters

batch_size (int) – Mini-batch size.

Returns

Mini-batch.

Return type

d3rlpy.dataset.mini_batch.TransitionMiniBatch

size()[source]

Returns number of episodes.

Returns

Number of episodes.

Return type

int

Attributes

buffer
dataset_info
episodes
primary_replay_buffer
secondary_replay_buffer
trajectory_slicer
transition_count
transition_picker