評價此頁

Dropout2d#

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

隨機將整個通道置零。

通道(Channel)是指一個 2D 特徵圖,例如,在批處理輸入中的第 ii 個樣本的第 jj 個通道是 2D 張量 input[i,j]\text{input}[i, j]

在每次前向傳播時,每個通道會以 p 的機率獨立地被清零,使用來自伯努利分佈的樣本。

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

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

在這種情況下,nn.Dropout2d() 將有助於促進特徵圖之間的獨立性,應取代其他方法。

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

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

警告

出於歷史原因,此類將對 3D 輸入執行 1D 通道維度的 Dropout(如 nn.Dropout1d 所做的那樣)。因此,它目前不支援沒有批次維度的形狀為 (C,H,W)(C, H, W) 的輸入。在未來的版本中,此行為將更改為將 3D 輸入解釋為無批次維度的輸入。要保持舊的行為,請切換到 nn.Dropout1d

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

  • 輸出:(N,C,H,W)(N, C, H, W)(N,C,L)(N, C, L) (與輸入形狀相同)。

示例

>>> m = nn.Dropout2d(p=0.2)
>>> input = torch.randn(20, 16, 32, 32)
>>> output = m(input)
forward(input)[原始碼]#

執行前向傳播。

返回型別

張量