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[來源]¶
轉換獎勵的 spec,使其與變換對映匹配。
- 引數:
reward_spec (TensorSpec) – 變換前的 spec
- 返回:
轉換後的預期規範