RewardSum¶
- class torchrl.envs.transforms.RewardSum(in_keys: Sequence[NestedKey] | None = None, out_keys: Sequence[NestedKey] | None = None, reset_keys: Sequence[NestedKey] | None = None, *, reward_spec: bool = False)[原始碼]¶
追蹤每個episode的累積獎勵。
此轉換接受一個tensordict獎勵鍵列表(即 ´in_keys´),並沿時間維度追蹤每個episode的累積值。
呼叫時,此轉換會為每個
in_key寫入一個新的tensordict條目,名稱為episode_{in_key},其中包含累積值。- 引數:
in_keys (list of NestedKeys, optional) – 輸入獎勵鍵。所有 ´in_keys´ 都應是環境的 reward_spec 的一部分。如果未指定
in_keys,則此轉換假定輸入鍵為"reward"。但是,也可以指定多個獎勵(例如"reward1"和"reward2")。out_keys (list of NestedKeys, optional) – 輸出總和鍵,每個輸入鍵對應一個。
reset_keys (list of NestedKeys, optional) – 要使用的 reset_keys 列表,如果找不到父環境。如果提供,此值將優先於環境的
reset_keys。
- 關鍵字引數:
reward_spec (bool, optional) – 如果為
True,新的獎勵條目將註冊到 reward specs 中。預設為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.]])
- transform_input_spec(input_spec: TensorSpec) TensorSpec[原始碼]¶
轉換輸入規範,使結果規範與轉換對映匹配。
- 引數:
input_spec (TensorSpec) – 轉換前的規範
- 返回值:
轉換後預期的規範
- transform_observation_spec(observation_spec: TensorSpec) TensorSpec[原始碼]¶
轉換觀察規範,新增由 RewardSum 生成的新鍵。
- transform_reward_spec(reward_spec: TensorSpec) TensorSpec[原始碼]¶
轉換獎勵規範,使結果規範與轉換對映匹配。
- 引數:
reward_spec (TensorSpec) – 轉換前的規範
- 返回值:
轉換後預期的規範