Dropout解析
Dropout的一般形式如下所示:
Dropout(p)
其中p是一個0-1的小數(shù),表示在訓(xùn)練時,使用伯努利分布的樣本,以概率 隨機置零輸入張量的一些元素。每個信道在每次前向調(diào)用時都將被獨立地置零。
此外,對于那些沒有被置0的參數(shù),同時乘以 進行放大。
注意: 只有在model.train()模式下,Dropout才會起作用, 而在model.eval()模式下,Dropout不進行處理。
In [5]: x=torch.rand(2,5)
In [6]: x
Out[6]:
tensor([[0.9188, 0.6057, 0.4477, 0.6748, 0.0624],
[0.7781, 0.7598, 0.8580, 0.5582, 0.8246]])
In [7]: model = nn.Dropout(0.5)
In [8]: model.train()
Out[8]: Dropout(p=0.5, inplace=False)
In [9]: model(x)
Out[9]:
tensor([[0.0000, 0.0000, 0.8953, 1.3497, 0.0000],
[0.0000, 1.5197, 0.0000, 1.1163, 1.6493]])
In [10]: model.eval()
Out[10]: Dropout(p=0.5, inplace=False)
In [11]: model(x)
Out[11]:
tensor([[0.9188, 0.6057, 0.4477, 0.6748, 0.0624],
[0.7781, 0.7598, 0.8580, 0.5582, 0.8246]])