首页 > 其他 > 详细

dropout正则化

时间:2021-08-01 22:28:21      阅读:28      评论:0      收藏:0      [点我收藏+]

0 dropout

当训练一个深度神经网络时,我们可以随机丢弃一部分神经元及其对应的连边来避免过拟合,这种方法称为丢弃法(Dropout Method)。其示意图如下:

技术分享图片

实际上我们并不改变网络结构,而是以一定的概率将网络的隐藏层输出值变成0。在对某个隐藏层进行dropout时,开辟一个新的矩阵mask,维度与隐藏层的维度相同,矩阵中的每个元素按照预设的概率p取值为0(小于p则取值为0,反之取值为1)。然后只需要将该矩阵与隐藏层做element-wise乘法即可。为了不改变dropout后的数据的期望,还需要将mask矩阵中取值为1对应的隐藏层原始数据除以(1 - p)。

\[x_{i}^{‘}=\left\{\begin{matrix} 0\\ \frac{x_{i}}{1-p} \end{matrix}\right.\]

注意:dropout通常用在全连接神经网络的隐藏层。

1 代码

def dropout_layer(sel, X, dropout_rate):
    if dropout_rate == 0:
        return X
    if dropout_rate == 1:
        return torch.zeros_like(X)
    mask = (np.random.randn(X.shape) > dropout_rate).float()

    return mask * X / (1.0 - dropout_rate)

dropout正则化

原文:https://www.cnblogs.com/foghorn/p/15087543.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!