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()
可以帮助促进特征图之间的独立性。- 形状:
-
-
输入格式为: $(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)