pytorch中nn.Dropout的使用技巧

dropout是Hinton老爷子提出来的一个用于训练的trick。在pytorch中,除了原始的用法以外,还有数据增强的用法(后文提到)。
首先要知道,dropout是专门用于训练的。在推理阶段,则需要把dropout关掉,而model.eval()就会做这个事情。
原文链接: https://arxiv.org/abs/1207.0580
通常意义的dropout解释为:在训练过程的前向传播中,让每个神经元以一定概率p处于不激活的状态。以达到减少过拟合的效果pytorch中nn.Dropout的使用技巧_第1张图片
然而,在pytorch中,dropout有另一个用法。如果把dropout加在输入张量上:

x = torch.randn(20, 16)
dropout = nn.Dropout(p=0.2)
x_drop = dropout(x)

那么,这个操作表示使x每个位置的元素都有一定概率归0,以此来模拟现实生活中的某些频道的数据缺失,以达到数据增强的目的
在官方doc描述如下:

During training, randomly zeroes some of the elements of the input tensor with probability :attr:p using samples from a Bernoulli distribution. Each channel will be zeroed out independently on every forward call.

每个频道的数据缺失相互独立,以服从伯努利分布的概率值p来进行随机变为0。

你可能感兴趣的:(Pytorch那些事儿,pytorch,深度学习,神经网络,dropout)