Alpha Dropout特性

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

随机完全遮蔽整个通道。

一个通道是一个特征图,例如,在批量输入中的第$i$个样本的第$j$个通道是输入张量中的一个张量$\text{input}[i, j]$。与常规Dropout将激活值设为零不同,这里的激活值被设置为SELU激活函数的负饱和值。更多细节可以在论文自归一化神经网络中找到。

每个元素将在每次前向调用时,对于每个样本以概率 p 使用伯努利分布独立进行掩码。在每次前向调用中,要被掩码的元素都是随机选择的,并且会被缩放和偏移以保持零均值和单位方差。

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

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

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

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

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

形状:
  • 输入格式为: $(N, C, D, H, W)$$(C, D, H, W)$

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

示例:

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