美文网首页深度学习
添加 dropout 正则化

添加 dropout 正则化

作者: 庵下桃花仙 | 来源:发表于2019-03-28 22:44 被阅读0次

    dropout 是神经网络最有效也最常用的正则化方法之一。在训练过程中随机将该层的一些输出特征舍弃(设置为0)。 dropout 比率(dropout rate)是被设为 0 的特征所占的比例,通常在 0.2~0.5范围内。测试时没有单元被舍弃,而该层的输出值需要按 dropout 比率缩小。
    例: 假设矩阵layer_output, 其 形 状 为 (batch_size, features)。训练时,我们随机将矩阵中一部分值设为 0。
    layer_output *= np.random.randint(0, high=2, size=layer_output.shape) # 训练时,舍弃50%的输出单元
    测试时,我们将输出按 dropout 比率缩小。这里我们乘以 0.5(因为前面舍弃了一半的单元)。
    layer_output *= 0.5 # 测试时
    这样做麻烦,可以将两个运算都在训练时进行,测试时输出保持不变。

    layer_output *= np.random.randint(0, high=2, size=layer_output.shape) # 训练时
    layer_output /= 0.5 # 注意,是成比例放大而不是成比例缩小
    
    # 向 IMDB 网络中添加 dropout
    model = models.Sequential()
    model.add(layers.Dense(16, activation='relu', input_shape=(10000,)))
    model.add(layers.Dropout(0.5))
    model.add(layers.Dense(16, activation='relu'))
    model.add(layers.Dropout(0.5))
    model.add(layers.Dense(1, activation='sigmoid'))
    

    防止神经网络过拟合的常用方法

    • 获取更多的训练数据
    • 减小网络容量
    • 添加权重正则化
    • 添加 dropout

    相关文章

      网友评论

        本文标题:添加 dropout 正则化

        本文链接:https://www.haomeiwen.com/subject/jtuhbqtx.html