快捷方式

EGreedyWrapper

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

[已弃用] Epsilon-Greedy PO 包装器。

参数:

policy (TensorDictModule) – 确定性策略。

关键字参数:
  • eps_init (标量, 可选) – 初始 epsilon 值。默认为 1.0

  • eps_end (标量, 可选) – 最终 epsilon 值。默认为 0.1

  • annealing_num_steps (int, 可选) – epsilon 达到 eps_end 值所需步数

  • action_key (嵌套键, 可选) – 输入 tensordict 中可以找到动作的键。默认为 "action"

  • action_mask_key (嵌套键, 可选) – 输入 tensordict 中可以找到动作掩码的键。默认为 None(对应于无掩码)。

  • spec (TensorSpec, 可选) – 如果提供,则采样动作将从此动作空间中获取。如果没有提供,则探索包装器将尝试从策略中恢复它。

注意

一旦模块被包装在 EGreedyWrapper 中,务必在训练循环中包含对 step() 的调用以更新探索因子。由于很难捕捉到这种遗漏,因此如果省略了此操作,将不会发出警告或引发异常!

示例

>>> import torch
>>> from tensordict import TensorDict
>>> from torchrl.modules import EGreedyWrapper, Actor
>>> from torchrl.data import BoundedTensorSpec
>>> torch.manual_seed(0)
>>> spec = BoundedTensorSpec(-1, 1, torch.Size([4]))
>>> module = torch.nn.Linear(4, 4, bias=False)
>>> policy = Actor(spec=spec, module=module)
>>> explorative_policy = EGreedyWrapper(policy, eps_init=0.2)
>>> td = TensorDict({"observation": torch.zeros(10, 4)}, batch_size=[10])
>>> print(explorative_policy(td).get("action"))
tensor([[ 0.0000,  0.0000,  0.0000,  0.0000],
        [ 0.0000,  0.0000,  0.0000,  0.0000],
        [ 0.9055, -0.9277, -0.6295, -0.2532],
        [ 0.0000,  0.0000,  0.0000,  0.0000],
        [ 0.0000,  0.0000,  0.0000,  0.0000],
        [ 0.0000,  0.0000,  0.0000,  0.0000],
        [ 0.0000,  0.0000,  0.0000,  0.0000],
        [ 0.0000,  0.0000,  0.0000,  0.0000],
        [ 0.0000,  0.0000,  0.0000,  0.0000],
        [ 0.0000,  0.0000,  0.0000,  0.0000]], grad_fn=<AddBackward0>)

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取面向初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并获得问题的解答

查看资源