Create tables to insert data into.
(
self,
environment_spec: specs.EnvironmentSpec,
)
| 125 | self._config = config |
| 126 | |
| 127 | def make_replay_tables( |
| 128 | self, |
| 129 | environment_spec: specs.EnvironmentSpec, |
| 130 | ) -> List[reverb.Table]: |
| 131 | """Create tables to insert data into.""" |
| 132 | if self._config.samples_per_insert is None: |
| 133 | # We will take a samples_per_insert ratio of None to mean that there is |
| 134 | # no limit, i.e. this only implies a min size limit. |
| 135 | limiter = reverb.rate_limiters.MinSize(self._config.min_replay_size) |
| 136 | |
| 137 | else: |
| 138 | # Create enough of an error buffer to give a 10% tolerance in rate. |
| 139 | samples_per_insert_tolerance = 0.1 * self._config.samples_per_insert |
| 140 | error_buffer = self._config.min_replay_size * samples_per_insert_tolerance |
| 141 | limiter = reverb.rate_limiters.SampleToInsertRatio( |
| 142 | min_size_to_sample=self._config.min_replay_size, |
| 143 | samples_per_insert=self._config.samples_per_insert, |
| 144 | error_buffer=error_buffer) |
| 145 | |
| 146 | replay_table = reverb.Table( |
| 147 | name=self._config.replay_table_name, |
| 148 | sampler=reverb.selectors.Uniform(), |
| 149 | remover=reverb.selectors.Fifo(), |
| 150 | max_size=self._config.max_replay_size, |
| 151 | rate_limiter=limiter, |
| 152 | signature=reverb_adders.NStepTransitionAdder.signature( |
| 153 | environment_spec)) |
| 154 | |
| 155 | return [replay_table] |
| 156 | |
| 157 | def make_dataset_iterator( |
| 158 | self, |