快捷方式

LineariseRewards

class torchrl.envs.transforms.LineariseRewards(in_keys: Sequence[NestedKey], out_keys: Sequence[NestedKey] | None = None, *, weights: Sequence[float] | Tensor | None = None)[源]

透過加權求和將多目標獎勵訊號轉換為單目標獎勵訊號。

引數:
  • in_keys (List[NestedKey]) – 查詢多目標獎勵的鍵列表。

  • out_keys (List[NestedKey], optional) – 應寫入單目標獎勵的鍵列表。預設為 in_keys

  • weights (List[float], Tensor, optional) – 指示在求和時如何對每個獎勵進行加權。預設為 [1.0, 1.0, …]

警告

如果傳入的 in_keys 序列長度嚴格大於一(例如,多智慧體設定中每個智慧體一組),則相同的權重將應用於每個條目。如果需要對每個組進行不同的獎勵聚合,請連續使用多個 LineariseRewards

示例

>>> import mo_gymnasium as mo_gym
>>> from torchrl.envs import MOGymWrapper
>>> mo_env = MOGymWrapper(mo_gym.make("deep-sea-treasure-v0"))
>>> mo_env.reward_spec
BoundedContinuous(
    shape=torch.Size([2]),
    space=ContinuousBox(
    low=Tensor(shape=torch.Size([2]), device=cpu, dtype=torch.float32, contiguous=True),
    high=Tensor(shape=torch.Size([2]), device=cpu, dtype=torch.float32, contiguous=True)),
    ...)
>>> so_env = TransformedEnv(mo_env, LineariseRewards(in_keys=("reward",)))
>>> so_env.reward_spec
BoundedContinuous(
    shape=torch.Size([1]),
    space=ContinuousBox(
        low=Tensor(shape=torch.Size([1]), device=cpu, dtype=torch.float32, contiguous=True),
        high=Tensor(shape=torch.Size([1]), device=cpu, dtype=torch.float32, contiguous=True)),
    ...)
>>> td = so_env.rollout(5)
>>> td["next", "reward"].shape
torch.Size([5, 1])
transform_reward_spec(reward_spec: TensorSpec) TensorSpec[源]

轉換獎勵規範,使結果規範與轉換對映匹配。

引數:

reward_spec (TensorSpec) – 轉換前的規範

返回:

轉換後預期的規範

文件

查閱 PyTorch 的全面開發者文件

檢視文件

教程

獲取面向初學者和高階開發者的深入教程

檢視教程

資源

查詢開發資源並獲得問題解答

檢視資源