评价此页

Dropout2d#

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

随机将整个通道置零。

通道(Channel)是指一个 2D 特征图,例如,在批处理输入中的第 ii 个样本的第 jj 个通道是 2D 张量 input[i,j]\text{input}[i, j]

在每次前向传播时,每个通道会以 p 的概率独立地被清零,使用来自伯努利分布的样本。

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

正如论文 Efficient Object Localization Using Convolutional Networks 中所述,如果特征图中的相邻像素强相关(这在早期卷积层中很常见),则 i.i.d. dropout 将不会正则化激活,否则只会导致有效的学习率降低。

在这种情况下,nn.Dropout2d() 将有助于促进特征图之间的独立性,应取代其他方法。

参数
  • p (float, optional) – 元素被归零的概率。

  • inplace (bool, optional) – 如果设置为 True,则将在原地执行此操作

警告

出于历史原因,此类将对 3D 输入执行 1D 通道维度的 Dropout(如 nn.Dropout1d 所做的那样)。因此,它目前不支持没有批次维度的形状为 (C,H,W)(C, H, W) 的输入。在未来的版本中,此行为将更改为将 3D 输入解释为无批次维度的输入。要保持旧的行为,请切换到 nn.Dropout1d

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

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

示例

>>> m = nn.Dropout2d(p=0.2)
>>> input = torch.randn(20, 16, 32, 32)
>>> output = m(input)
forward(input)[源代码]#

执行前向传播。

返回类型

张量