dropout
原理和作用
在训练阶段对于加入dropout层的每个神经元以概率p断开,预测阶段神经元都保持连接但要给dropout层输出乘以1-p。Dropout相当于给神经网络加入了噪声,使其不能过度依赖某些特征可以减少模型的过拟合。加入dropout后原来的神经网络可以看成多个子网络的bagging模型。
python代码实现
class Dropout: def __init__(self, dropout_ratio=0.5): self.dropout_ratio = dropout_ratio self.mask = None def forward(self, x, train_flg = True): if train_flg: self.mask = np.random.rand(*x.shape) > self.dropout_ratio return x * self.mask else: return x * (1.0 - self.dropout_ratio) def backward(self, dout): return dout * self.mask