dropout

原理和作用

在训练阶段对于加入dropout层的每个神经元以概率p断开,预测阶段神经元都保持连接但要给dropout层输出乘以1-pDropout相当于给神经网络加入了噪声,使其不能过度依赖某些特征可以减少模型的过拟合。加入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

 

posted @ 2019-06-24 21:34  xd_xumaomao  阅读(455)  评论(0编辑  收藏  举报