快捷方式

RewardSum

class torchrl.envs.transforms.RewardSum(in_keys: Optional[Sequence[NestedKey]] = None, out_keys: Optional[Sequence[NestedKey]] = None, reset_keys: Optional[Sequence[NestedKey]] = None, *, reward_spec: bool = False)[原始碼]

追蹤回合的累積獎勵。

此轉換接受 tensordict 獎勵鍵的清單 (即 ´in_keys´),並追蹤每個回合沿著時間維度的累積值。

當呼叫時,轉換會為每個名為 episode_{in_key}in_key 寫入一個新的 tensordict 條目,其中寫入累積值。

參數:
  • in_keys (NestedKeys 列表, 選填) – 輸入獎勵金鑰。所有的 ´in_keys´ 都應該是環境 reward_spec 的一部分。如果沒有指定 in_keys,這個轉換會假設 "reward" 作為輸入金鑰。然而,也可以指定多個獎勵 (例如 "reward1""reward2"")。

  • out_keys (NestedKeys 列表, 選填) – 輸出加總金鑰,每個輸入金鑰應該對應一個。

  • reset_keys (NestedKeys 列表, 選填) – 要使用的 reset_keys 列表,如果找不到父環境。 如果提供,此值將優先於環境的 reset_keys

關鍵字參數:

reward_spec (bool, 選填) – 如果 True,新的獎勵條目將會註冊到獎勵規格中。預設為 False (註冊到 observation_specs 中)。

範例

>>> from torchrl.envs.transforms import RewardSum, TransformedEnv
>>> from torchrl.envs.libs.gym import GymEnv
>>> env = TransformedEnv(GymEnv("CartPole-v1"), RewardSum())
>>> env.set_seed(0)
>>> torch.manual_seed(0)
>>> td = env.reset()
>>> print(td["episode_reward"])
tensor([0.])
>>> td = env.rollout(3)
>>> print(td["next", "episode_reward"])
tensor([[1.],
        [2.],
        [3.]])
forward(tensordict: TensorDictBase) TensorDictBase[source]

讀取輸入的 tensordict,並且對於選擇的金鑰,套用轉換。

transform_input_spec(input_spec: TensorSpec) TensorSpec[source]

轉換輸入規格,使得結果規格符合轉換映射。

參數:

input_spec (TensorSpec) – 轉換前的規格

回傳:

轉換後預期的規格

transform_observation_spec(observation_spec: TensorSpec) TensorSpec[source]

轉換 observation spec,新增 RewardSum 產生之金鑰。

transform_reward_spec(reward_spec: TensorSpec) TensorSpec[source]

轉換 reward spec,使得結果規格符合轉換映射。

參數:

reward_spec (TensorSpec) – 轉換前的規格

回傳:

轉換後預期的規格

文件

存取 PyTorch 的完整開發者文件

檢視文件

教學

取得初學者和進階開發人員的深入教學

檢視教學

資源

尋找開發資源並取得問題解答

檢視資源