Dropout解析
Dropout的一般形式如下所示:
Dropout(p)
其中p是一个0-1的小数,表示在训练时,使用伯努利分布的样本,以概率 随机置零输入张量的一些元素。每个信道在每次前向调用时都将被独立地置零。
此外,对于那些没有被置0的参数,同时乘以 进行放大。
注意: 只有在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]])
网友评论