快捷方式

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) – 转换前的规范

返回:

转换后的预期规范

transform_output_spec(output_spec: Composite) Composite[source]

转换输出规范,使结果规范与转换映射匹配。

此方法通常应保持不变。更改应使用 transform_observation_spec(), transform_reward_spec()transform_full_done_spec() 实现。 :param output_spec: 转换前的 spec :type output_spec: TensorSpec

返回:

转换后的预期规范

文档

访问全面的 PyTorch 开发者文档

查看文档

教程

为初学者和高级开发者提供深入的教程

查看教程

资源

查找开发资源并让您的问题得到解答

查看资源