快捷方式

Conv3dNet

class torchrl.modules.Conv3dNet(in_features: ~typing.Optional[int] = None, depth: ~typing.Optional[int] = None, num_cells: ~typing.Optional[~typing.Union[~typing.Sequence[int], int]] = None, kernel_sizes: ~typing.Union[~typing.Sequence[int], int] = 3, strides: ~typing.Union[~typing.Sequence[int], int] = 1, paddings: ~typing.Union[~typing.Sequence[int], int] = 0, activation_class: ~typing.Union[~typing.Type[~torch.nn.modules.module.Module], ~typing.Callable] = <class 'torch.nn.modules.activation.ELU'>, activation_kwargs: ~typing.Optional[~typing.Union[dict, ~typing.List[dict]]] = None, norm_class: ~typing.Optional[~typing.Union[~typing.Type[~torch.nn.modules.module.Module], ~typing.Callable]] = None, norm_kwargs: ~typing.Optional[~typing.Union[dict, ~typing.List[dict]]] = None, bias_last_layer: bool = True, aggregator_class: ~typing.Optional[~typing.Union[~typing.Type[~torch.nn.modules.module.Module], ~typing.Callable]] = <class 'torchrl.modules.models.utils.SquashDims'>, aggregator_kwargs: ~typing.Optional[dict] = None, squeeze_output: bool = False, device: ~typing.Optional[~torch.device, str, int]] = None)[source]

一个 3D 卷积神经网络。

参数:
  • in_features (int, 可选) – 输入特征的数量。如果未提供,将使用惰性实现自动检索输入大小。

  • depth (int, 可选) – 网络的深度。深度为 1 将生成一个单层线性网络,其输入大小为所需大小,输出大小等于 num_cells 参数的最后一个元素。如果未指明 depth,则 depth 信息应包含在 num_cells 参数中(见下文)。如果 num_cells 是可迭代对象且指明了 depth,则两者应匹配:len(num_cells) 必须等于 depth

  • num_cells (intint 序列, 可选) – 输入和输出之间每层的单元数。如果提供整数,则每层将具有相同数量的单元,并且深度将从 depth 中检索。如果提供可迭代对象,则线性层 out_features 将匹配 num_cells 的内容。默认为 [32, 32, 32][32] * depth` is depth is not ``None

  • kernel_sizes (int, int 序列, 可选) – 卷积网络的内核大小。如果可迭代,则长度必须与深度匹配,由 num_cells 或 depth 参数定义。默认为 3

  • strides (intint 序列) – 卷积网络的步幅。如果可迭代,则长度必须与深度匹配,由 num_cells 或 depth 参数定义。默认为 1

  • activation_class (Type[nn.Module] 或 callable) – 要使用的激活类或构造函数。默认为 Tanh

  • activation_kwargs (dictdict 列表, 可选) – 要与激活类一起使用的 kwargs。也可以提供长度为 depth 的 kwargs 列表,每层一个元素。

  • norm_class (Typecallable, 可选) – 归一化类(如果有)。

  • norm_kwargs (dictdict 列表, 可选) – 要与归一化层一起使用的 kwargs。也可以提供长度为 depth 的 kwargs 列表,每层一个元素。

  • bias_last_layer (bool) – 如果为 True,则最后一个线性层将具有偏差参数。默认为 True

  • aggregator_class (Type[nn.Module] 或 callable) – 要在链末尾使用的聚合器类或构造函数。默认为 SquashDims

  • aggregator_kwargs (dict, 可选) – aggregator_class 构造函数的 kwargs。

  • squeeze_output (bool) – 输出是否应挤压其单例维度。默认为 False

  • device (torch.device, 可选) – 在其上创建模块的设备。

示例

>>> # All of the following examples provide valid, working MLPs
>>> cnet = Conv3dNet(in_features=3, depth=1, num_cells=[32,])
>>> print(cnet)
Conv3dNet(
    (0): Conv3d(3, 32, kernel_size=(3, 3, 3), stride=(1, 1, 1))
    (1): ELU(alpha=1.0)
    (2): SquashDims()
)
>>> cnet = Conv3dNet(in_features=3, depth=4, num_cells=32)
>>> print(cnet)
Conv3dNet(
    (0): Conv3d(3, 32, kernel_size=(3, 3, 3), stride=(1, 1, 1))
    (1): ELU(alpha=1.0)
    (2): Conv3d(32, 32, kernel_size=(3, 3, 3), stride=(1, 1, 1))
    (3): ELU(alpha=1.0)
    (4): Conv3d(32, 32, kernel_size=(3, 3, 3), stride=(1, 1, 1))
    (5): ELU(alpha=1.0)
    (6): Conv3d(32, 32, kernel_size=(3, 3, 3), stride=(1, 1, 1))
    (7): ELU(alpha=1.0)
    (8): SquashDims()
)
>>> cnet = Conv3dNet(in_features=3, num_cells=[32, 33, 34, 35])  # defines the depth by the num_cells arg
>>> print(cnet)
Conv3dNet(
    (0): Conv3d(3, 32, kernel_size=(3, 3, 3), stride=(1, 1, 1))
    (1): ELU(alpha=1.0)
    (2): Conv3d(32, 33, kernel_size=(3, 3, 3), stride=(1, 1, 1))
    (3): ELU(alpha=1.0)
    (4): Conv3d(33, 34, kernel_size=(3, 3, 3), stride=(1, 1, 1))
    (5): ELU(alpha=1.0)
    (6): Conv3d(34, 35, kernel_size=(3, 3, 3), stride=(1, 1, 1))
    (7): ELU(alpha=1.0)
    (8): SquashDims()
)
>>> cnet = Conv3dNet(in_features=3, num_cells=[32, 33, 34, 35], kernel_sizes=[3, 4, 5, (2, 3, 4)])  # defines kernels, possibly rectangular
>>> print(cnet)
Conv3dNet(
    (0): Conv3d(3, 32, kernel_size=(3, 3, 3), stride=(1, 1, 1))
    (1): ELU(alpha=1.0)
    (2): Conv3d(32, 33, kernel_size=(4, 4, 4), stride=(1, 1, 1))
    (3): ELU(alpha=1.0)
    (4): Conv3d(33, 34, kernel_size=(5, 5, 5), stride=(1, 1, 1))
    (5): ELU(alpha=1.0)
    (6): Conv3d(34, 35, kernel_size=(2, 3, 4), stride=(1, 1, 1))
    (7): ELU(alpha=1.0)
    (8): SquashDims()
)
forward(inputs: Tensor) Tensor[source]

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

应由所有子类重写。

注意

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

文档

访问全面的 PyTorch 开发者文档

查看文档

教程

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

查看教程

资源

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

查看资源