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) – 轉換前的規範
- 返回:
轉換後的預期規範