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) – 值模型。
model_based_env (DreamerEnv) – 基于模型的环境。
imagination_horizon (int, 可选) – 模型展开的步数。默认为
15
。discount_loss (bool, 可选) – 如果为
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)[源代码]¶
值函数构造函数。
如果需要非默认值函数,则必须使用此方法构建它。
- 参数:
value_type (ValueEstimators) – 一个
ValueEstimators
枚举类型,指示要使用的值函数。如果没有提供,则将使用default_value_estimator
属性中存储的默认值。生成的估值器类将在self.value_type
中注册,允许将来进行改进。**hyperparams – 用于值函数的超参数。如果未提供,则将使用
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)