捷徑

Actor

class torchrl.modules.tensordict_module.Actor(*args, **kwargs)[source]

RL 中用於確定性 Actor 的通用類別。

Actor 類別具有 out_keys(["action"])的預設值,如果提供了規格但不是 Composite 物件,它將自動轉換為 spec = Composite(action=spec)

參數:
  • module (nn.Module) – 用於將輸入映射到輸出參數空間的 Module

  • in_keys (str 的可迭代物件, 選用) – 從輸入 tensordict 讀取並傳遞給模組的鍵。如果它包含多個元素,則這些值將按照 in_keys 可迭代物件給定的順序傳遞。預設值為 ["observation"]

  • out_keys (str 的可迭代物件) – 要寫入輸入 tensordict 的鍵。out_keys 的長度必須與嵌入式模組傳回的張量數量相符。使用 "_" 作為鍵可以避免將張量寫入輸出。預設值為 ["action"]

關鍵字引數:
  • spec (TensorSpec, 選用) – 僅限關鍵字的引數。輸出張量的規格。如果模組輸出多個輸出張量,則 spec 表徵第一個輸出張量的空間。

  • safe (bool) – 僅限關鍵字的引數。如果為 True,則根據輸入規格檢查輸出的值。由於探索策略或數值下溢/溢位問題,可能會發生超出域的取樣。如果此值超出範圍,則使用 project() 方法將其投影回所需的空間。預設值為 False

範例

>>> import torch
>>> from tensordict import TensorDict
>>> from torchrl.data import Unbounded
>>> from torchrl.modules import Actor
>>> torch.manual_seed(0)
>>> td = TensorDict({"observation": torch.randn(3, 4)}, [3,])
>>> action_spec = Unbounded(4)
>>> module = torch.nn.Linear(4, 4)
>>> td_module = Actor(
...    module=module,
...    spec=action_spec,
...    )
>>> td_module(td)
TensorDict(
    fields={
        action: Tensor(shape=torch.Size([3, 4]), device=cpu, dtype=torch.float32, is_shared=False),
        observation: Tensor(shape=torch.Size([3, 4]), device=cpu, dtype=torch.float32, is_shared=False)},
    batch_size=torch.Size([3]),
    device=None,
    is_shared=False)
>>> print(td.get("action"))
tensor([[-1.3635, -0.0340,  0.1476, -1.3911],
        [-0.1664,  0.5455,  0.2247, -0.4583],
        [-0.2916,  0.2160,  0.5337, -0.5193]], grad_fn=<AddmmBackward0>)

文件

存取 PyTorch 的完整開發者文件

檢視文件

教學課程

取得為初學者和進階開發人員提供的深入教學課程

檢視教學課程

資源

尋找開發資源並獲得您的問題解答

檢視資源