辍学和批量标准化 - 层的顺序重要吗?
Posted
技术标签:
【中文标题】辍学和批量标准化 - 层的顺序重要吗?【英文标题】:Dropout & batch normalization - does the ordering of layers matter? 【发布时间】:2020-02-03 23:38:39 【问题描述】:我正在构建一个神经网络模型,我的问题是,dropout 和批量归一化层的顺序是否真的会影响模型? 如果我使用 ROC-AUC 分数作为我的衡量指标,那么将 dropout 层放在批标准化层之前(反之亦然)实际上会对模型的输出产生任何影响。
我希望输出具有较大的 (ROC-AUC) 分数,并且想知道它是否会受到层排序的任何影响。
【问题讨论】:
这能回答你的问题吗? Ordering of batch normalization and dropout? 【参考方案1】:层的顺序会影响模型的收敛性,从而影响结果。基于 Batch Normalizationpaper,作者建议 Batch Normalization 应该在激活函数之前实现。因为 Dropout 是在计算激活后应用的。那么正确的层顺序是:
密集或转换 批量标准化 激活 辍学。在使用 keras 的代码中,这是按顺序编写的:
model = Sequential()
model.add(Dense(n_neurons, input_shape=your_input_shape, use_bias=False)) # it is important to disable bias when using Batch Normalization
model.add(BatchNormalization())
model.add(Activation('relu')) # for example
model.add(Dropout(rate=0.25))
批量标准化有助于在训练模型时避免梯度消失/爆炸。因此,如果您有很多层,这一点特别重要。您可以阅读提供的论文以了解更多详细信息。
【讨论】:
以上是关于辍学和批量标准化 - 层的顺序重要吗?的主要内容,如果未能解决你的问题,请参考以下文章