ray.rllib.policy.sample_batch.SampleBatch.right_zero_pad#

SampleBatch.right_zero_pad(max_seq_len: int, exclude_states: bool = True)[源代码]#

Right (在末尾添加零) 就地对 SampleBatch 进行零填充。

这将把 self.zero_padded 标志设置为 True,并将 self.max_seq_len 设置为给定的 max_seq_len 值。

参数:
  • max_seq_len – 最大(总计)长度,用于填充零。

  • exclude_states – 如果为 False,也对所有 state_in_x 数据进行右零填充。如果为 True,则保持 state_in_x 键不变。

返回:

这个非常(现在右零填充的)SampleBatch。

抛出:

ValueError – 如果 self[SampleBatch.SEQ_LENS] 为 None(未定义)。

from ray.rllib.policy.sample_batch import SampleBatch
batch = SampleBatch(
    {"a": [1, 2, 3], "seq_lens": [1, 2]})
print(batch.right_zero_pad(max_seq_len=4))

batch = SampleBatch({"a": [1, 2, 3],
                     "state_in_0": [1.0, 3.0],
                     "seq_lens": [1, 2]})
print(batch.right_zero_pad(max_seq_len=5))
{"a": [1, 0, 0, 0, 2, 3, 0, 0], "seq_lens": [1, 2]}
{"a": [1, 0, 0, 0, 0, 2, 3, 0, 0, 0],
 "state_in_0": [1.0, 3.0],  # <- all state-ins remain as-is
 "seq_lens": [1, 2]}