快捷方式

EGreedyModule

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

Epsilon-Greedy 探索模块。

此模块根据 Epsilon-Greedy 探索策略随机更新 Tensordict 中的动作。在每次调用时,都会根据某个概率阈值执行随机抽取(每个动作一个)。如果成功,相应的动作将被从提供的动作规范中抽取的随机样本替换。其他动作保持不变。

参数:
  • spec (TensorSpec) – 用于采样动作的规范。

  • eps_init (标量, 可选) – 初始 Epsilon 值。默认值:1.0

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

  • annealing_num_steps (整数, 可选) – Epsilon 达到 eps_end 值所需步数。默认为 1000

关键字参数:
  • action_key (嵌套键, 可选) – 输入 Tensordict 中可以找到动作的键。默认值为 "action"

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

注意

在训练循环中包含对 step() 的调用的至关重要,以更新探索因子。由于很难捕获此遗漏,因此如果省略此操作,不会发出任何警告或异常!

示例

>>> import torch
>>> from tensordict import TensorDict
>>> from tensordict.nn import TensorDictSequential
>>> from torchrl.modules import EGreedyModule, 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 = TensorDictSequential(policy,  EGreedyModule(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>)
forward(tensordict: TensorDictBase) TensorDictBase[source]

定义每次调用时执行的计算。

所有子类都应覆盖此方法。

注意

尽管正向传递的配方需要在此函数中定义,但应该之后调用 Module 实例,而不是此函数,因为前者负责运行已注册的钩子,而后者则会静默忽略它们。

step(frames: int = 1) None[source]

Epsilon 衰减的一步。

在对该方法调用 self.annealing_num_steps 次后,后续调用将变为无操作。

参数:

frames (整数, 可选) – 自上次步骤以来的帧数。默认为 1

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取适合初学者和高级开发人员的深度教程

查看教程

资源

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

查看资源