FeatureAlphaDropout¶
- class torch.nn.FeatureAlphaDropout(p=0.5, inplace=False)[source][source]¶
隨機遮罩整個通道。
通道 (channel) 是一種特徵圖 (feature map),例如,批次輸入 (batch input) 中第 個樣本的第 個通道是一個張量 (輸入張量 (input tensor) 的一部分)。與常規 Dropout 將激活值 (activations) 設為零不同,Alpha Dropout 將激活值設為 SELU 激活函數的負飽和值。更多詳細資訊請參考論文 Self-Normalizing Neural Networks 。
在每次前向呼叫 (forward call) 中,每個元素會以機率
p
獨立地遮罩 (masked) 每個樣本,該機率是使用來自白努利分布 (Bernoulli distribution) 的樣本。 要遮罩的元素在每次前向呼叫時都會隨機化,並且會進行縮放 (scaled) 和偏移 (shifted) 以維持零均值和單位變異數 (unit variance)。通常輸入來自
nn.AlphaDropout
模組。如同論文 Efficient Object Localization Using Convolutional Networks 中所述,如果特徵圖中的相鄰像素高度相關(早期卷積層中通常如此),那麼獨立同分布 (i.i.d.) 的 Dropout 將無法正規化 (regularize) 激活值,只會導致有效學習率 (effective learning rate) 降低。
在這種情況下,
nn.AlphaDropout()
將有助於促進特徵圖之間的獨立性,因此應該改用它。- 參數 (Parameters)
- 形狀 (Shape)
輸入 (Input): 或 .
輸出 (Output): 或 (與輸入相同形狀)。
範例 (Examples)
>>> m = nn.FeatureAlphaDropout(p=0.2) >>> input = torch.randn(20, 16, 4, 32, 32) >>> output = m(input)