MultiAction¶
- class torchrl.envs.transforms.MultiAction(*, dim: int = 1, stack_rewards: bool = True, stack_observations: bool = False)[source]¶
一个用于在父环境中执行多个动作的变换。
此变换沿特定维度解绑动作,并独立传递每个动作。返回的变换可以是收集到的观察结果堆栈,也可以是仅最后一个观察结果(奖励同理,请参阅下面的参数)。
默认情况下,动作必须沿着根 tensordict batch-dims 之后的第一个维度堆叠,即
>>> td = policy(td) >>> actions = td.select(*env.action_keys) >>> # Adapt the batch-size >>> actions = actions.auto_batch_size_(td.ndim + 1) >>> # Step-wise actions >>> actions = actions.unbind(-1)
如果遇到 “done” 条目,将跳过已达到该状态的环境的后续步骤。
注意
如果在 MultiAction 之前附加了变换,它将被调用多次。如果在其之后附加,它将对每个宏观步骤调用一次。
- 关键字参数:
dim (int, optional) – 相对于 tensordict
ndim
属性的堆叠维度。必须大于 0。默认为1
(batch-dims 之后的第一个维度)。stack_rewards (bool, optional) – 如果为
True
,则每个步骤的奖励将堆叠在输出 tensordict 中。如果为False
,则仅返回最后一个奖励。奖励的规格会相应调整。堆叠维度与动作堆叠维度相同。默认为True
。stack_observations (bool, optional) – 如果为
True
,则每个步骤的观察结果将堆叠在输出 tensordict 中。如果为False
,则仅返回最后一个观察结果。观察结果的规格会相应调整。堆叠维度与动作堆叠维度相同。默认为False
。
- transform_input_spec(input_spec: TensorSpec) TensorSpec [source]¶
转换输入规范,使结果规范与转换映射匹配。
- 参数:
input_spec (TensorSpec) – 转换前的规范
- 返回:
转换后的预期规范