Dropout2d

classtorch.nn.Dropout2d(p=0.5, inplace=False)[源代码]

随机将整个通道设置为零。

一个通道是一张二维特征图。例如,批量输入中第$i$个样本的第$j$个通道是一个二维张量$\text{input}[i, j]$

每个通道将在每次前向调用时以概率 p 独立地置零,样本来自伯努利分布。

通常,输入来自nn.Conv2d模块。

正如论文Efficient Object Localization Using Convolutional Networks 中所述,如果特征图中的相邻像素高度相关(这通常发生在早期卷积层),独立同分布的 dropout 将不会对激活进行正则化,并且实际上会导致有效学习率下降。

在这种情况下,使用 nn.Dropout2d() 可以帮助促进特征图之间的独立性。

参数
  • p (float, 可选) – 控制元素被置零的概率。

  • inplace (bool, 可选) – 如果设置为 True,将以原地方式执行此操作

警告

由于历史原因,此类对3D输入执行与nn.Dropout1d相同的1D通道 dropout 操作。因此,它目前不支持形状为$(C, H, W)$且没有批量维度的输入。此行为将在未来的版本中更改,将3D输入解释为无批量维度的输入。为了保持旧的行为,请切换到nn.Dropout1d

形状:
  • 输入: $(N, C, H, W)$$(N, C, L)$

  • 输出: $(N, C, H, W)$$(N, C, L)$(与输入的形状相同)。

示例:

>>> m = nn.Dropout2d(p=0.2)
>>> input = torch.randn(20, 16, 32, 32)
>>> output = m(input)
本页目录