DreamerActorLoss¶
- class torchrl.objectives.DreamerActorLoss(*args, **kwargs)[原始碼]¶
Dreamer Actor 損失。
計算 dreamer actor 的損失。Actor 損失計算為負平均 lambda 回報。
參考文獻:https://arxiv.org/abs/1912.01603。
- 參數:
actor_model (TensorDictModule) – actor 模型。
value_model (TensorDictModule) – value 模型。
model_based_env (DreamerEnv) – 基於模型的環境。
imagination_horizon (int, optional) – 展開模型的步驟數。預設為
15
。discount_loss (bool, optional) – 如果
True
,則損失會以 gamma 折扣因子進行折扣。預設為False
。
- forward(tensordict: TensorDict) Tuple[TensorDict, TensorDict] [原始碼]¶
它旨在讀取一個輸入 TensorDict 並返回另一個具有名為 “loss*” 的損失鍵的 tensordict。
然後,訓練器可以使用將損失分成其組成部分來記錄整個訓練過程中的各種損失值。輸出 tensordict 中存在的其他純量也將被記錄。
- 參數:
tensordict – 一個輸入 tensordict,其中包含計算損失所需的值。
- 返回值:
一個新的 tensordict,沒有包含各種損失純量的批次維度,這些純量將被命名為 “loss*”。必須使用此名稱返回損失,因為它們將在反向傳播之前被訓練器讀取。
- make_value_estimator(value_type: Optional[ValueEstimators] = None, **hyperparams)[source]¶
Value-function 建構子。
如果需要非預設的 value function,則必須使用此方法建立。
- 參數:
value_type (ValueEstimators) – 一個
ValueEstimators
列舉型別,指示要使用的 value function。 如果未提供,將使用儲存在default_value_estimator
屬性中的預設值。 結果產生的 value estimator 類別將註冊在self.value_type
中,允許未來進行調整。**hyperparams – 用於 value function 的超參數。 如果未提供,將使用
default_value_kwargs()
指示的值。
範例
>>> from torchrl.objectives import DQNLoss >>> # initialize the DQN loss >>> actor = torch.nn.Linear(3, 4) >>> dqn_loss = DQNLoss(actor, action_space="one-hot") >>> # updating the parameters of the default value estimator >>> dqn_loss.make_value_estimator(gamma=0.9) >>> dqn_loss.make_value_estimator( ... ValueEstimators.TD1, ... gamma=0.9) >>> # if we want to change the gamma value >>> dqn_loss.make_value_estimator(dqn_loss.value_type, gamma=0.9)