CS231N实验:dropout

PS: 本文默认已学习CS231N相关课程并掌握相关知识。

dropout的相关原理本文不再描述,详情请见Dropout (neural networks)

那么我们怎么实现dropout呢?假设我们有 \(n\) 个神经元,每个神经元输出 \(m\) 维向量。那么,我们就随机生成一个 \(n\) 维向量,并按一定比例将值设为0(随机失活)。

1
2
3
4
5
6
# forward
mask = (np.random.random(x.shape[0]) > p) / (1-p) # rescale
out = x * (mask.reshape(-1, 1))
# backword
dx = mask.reshape(-1, 1) * dout