文章目录
正则化方法——Dropout
所谓dropout,是指在神经网络之中每一次前向传播都随机以一定的概率将一些神经元丢弃。
一般用于全连接层输出之后。
假如一个全连接层的输出是x,那么使用dropout对其丢弃的做法是:
x
=
{
0
,
x
<
p
x
1
−
p
,
x
≥
p
x=\begin{cases} 0,x<p \\ \frac{x}{1-p},x \ge p \end{cases}
x={0,x<p1−px,x≥p其中,
p
p
p是一个范围在0到1之间的超参数,表示dropout的概率。
按照这个公式来看,dropout就是以一定概率将一个值置为0,否则将这个值放大。
在pytorch之中,使用dropout的方法很简单,在全连接层和激活层的后面加上dropout层即可。
# p是超参数
net = nn.Sequential(nn.Flatten(), nn.Linear(784, 392), nn.ReLU(), nn.Dropout(p),
nn.Linear(392,100), nn.ReLU(), nn.Dropout(p), nn.Linear(100, 10))