快捷方式

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)[原始碼]

跟蹤每輪的累積獎勵。

此轉換器接受 tensordict 獎勵鍵的列表(即 'in_keys'),並在每輪的時間維度上跟蹤它們的累積值。

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

引數:
  • in_keysNestedKeys 列表可選)– 輸入獎勵鍵。所有 'in_keys' 都應是環境 reward_spec 的一部分。如果未指定 `in_keys`,則此轉換器假定 'reward' 是輸入鍵。但是,也可以指定多個獎勵(例如,“reward1” 和 “reward2”)。

  • out_keysNestedKeys 列表可選)– 輸出總和鍵,每個輸入鍵應有一個。

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

關鍵字引數:

reward_specbool可選)– 如果為 `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.]])
forward(tensordict: TensorDictBase) TensorDictBase[原始碼]

讀取輸入 tensordict,並對選定的鍵應用轉換。

預設情況下,此方法

  • 直接呼叫 _apply_transform()

  • 不呼叫 _step()_call()

此方法不會在任何時候在 env.step 中呼叫。但是,它會在 sample() 中呼叫。

注意

forward 也可以使用 dispatch 將引數名稱轉換為鍵,並使用常規關鍵字引數。

示例

>>> class TransformThatMeasuresBytes(Transform):
...     '''Measures the number of bytes in the tensordict, and writes it under `"bytes"`.'''
...     def __init__(self):
...         super().__init__(in_keys=[], out_keys=["bytes"])
...
...     def forward(self, tensordict: TensorDictBase) -> TensorDictBase:
...         bytes_in_td = tensordict.bytes()
...         tensordict["bytes"] = bytes
...         return tensordict
>>> t = TransformThatMeasuresBytes()
>>> env = env.append_transform(t) # works within envs
>>> t(TensorDict(a=0))  # Works offline too.
transform_input_spec(input_spec: TensorSpec) TensorSpec[原始碼]

轉換輸入規範,使結果規範與轉換對映匹配。

引數:

input_spec (TensorSpec) – 轉換前的規範

返回:

轉換後的預期規範

transform_observation_spec(observation_spec: TensorSpec) TensorSpec[原始碼]

轉換 observation spec,新增 RewardSum 生成的新鍵。

transform_reward_spec(reward_spec: TensorSpec) TensorSpec[原始碼]

轉換獎勵的 spec,使其與變換對映匹配。

引數:

reward_spec (TensorSpec) – 變換前的 spec

返回:

轉換後的預期規範

文件

訪問全面的 PyTorch 開發者文件

檢視文件

教程

為初學者和高階開發者提供深入的教程

檢視教程

資源

查詢開發資源並讓您的問題得到解答

檢視資源