評價此頁

FeatureAlphaDropout#

class torch.nn.modules.dropout.FeatureAlphaDropout(p=0.5, inplace=False)[原始碼]#

隨機遮蔽整個通道。

一個通道(channel)是一個特徵圖(feature map),例如,批次輸入中第 ii 個樣本的第 jj 個通道是輸入張量 input[i,j]\text{input}[i, j]。與常規的 Dropout 將啟用值設定為零不同,這裡將啟用值設定為 SELU 啟用函式的負飽和值。更多細節可在論文 Self-Normalizing Neural Networks 中找到。

每個元素將根據來自伯努利分佈的樣本,以 p 的機率獨立地被遮蔽(mask)。被遮蔽的元素將在每次前向傳播時隨機化,並進行縮放和移位以保持零均值和單位方差。

通常輸入來自 nn.AlphaDropout 模組。

正如論文 Efficient Object Localization Using Convolutional Networks 中所述,如果特徵圖中的相鄰畫素強相關(這在早期卷積層中很常見),則 i.i.d. dropout 將不會正則化啟用,否則只會導致有效的學習率降低。

在這種情況下,nn.AlphaDropout() 將有助於促進特徵圖之間的獨立性,並應被替代使用。

引數
  • p (float, optional) – 元素被歸零的機率。預設為 0.5。

  • inplace (bool, optional) – 如果設定為 True,則將在原地執行此操作

形狀
  • 輸入: (N,C,D,H,W)(N, C, D, H, W)(C,D,H,W)(C, D, H, W)

  • 輸出: (N,C,D,H,W)(N, C, D, H, W)(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)
forward(input)[原始碼]#

執行前向傳播。

返回型別

張量