Dropout2d¶
- class torch.nn.Dropout2d(p=0.5, inplace=False)[source]¶
随机将整个通道清零。
通道是一个二维特征图,例如,批处理输入中第 个样本的第 个通道是一个二维张量 .
每个通道将在每次前向调用时以概率
p
独立地清零,使用伯努利分布的样本。通常,输入来自
nn.Conv2d
模块。如论文 Efficient Object Localization Using Convolutional Networks 中所述,如果特征图中相邻像素之间存在强相关性(在早期卷积层中通常如此),那么独立同分布的 dropout 将不会正则化激活,否则只会导致有效的学习率下降。
在这种情况下,
nn.Dropout2d()
将有助于促进特征图之间的独立性,因此应该使用它。警告
由于历史原因,此类将对 3D 输入执行 1D 通道级 dropout(如
nn.Dropout1d
所做的那样)。因此,它当前不支持形状为 且没有批处理维度的输入。此行为将在未来版本中更改为将 3D 输入解释为无批处理维度的输入。要保持旧的行为,请切换到nn.Dropout1d
。- 形状
输入: 或 .
输出: 或 (与输入形状相同)。
示例
>>> m = nn.Dropout2d(p=0.2) >>> input = torch.randn(20, 16, 32, 32) >>> output = m(input)