【问题标题】:Dropout & batch normalization - does the ordering of layers matter?辍学和批量标准化 - 层的顺序重要吗?
【发布时间】:2020-02-03 23:38:39
【问题描述】:

我正在构建一个神经网络模型,我的问题是,dropout 和批量归一化层的顺序是否真的会影响模型? 如果我使用 ROC-AUC 分数作为我的衡量指标,那么将 dropout 层放在批标准化层之前(反之亦然)实际上会对模型的输出产生任何影响。

我希望输出具有较大的 (ROC-AUC) 分数,并且想知道它是否会受到层排序的任何影响。

【问题讨论】:

标签: python-3.x machine-learning deep-learning batch-normalization 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))

批量标准化有助于在训练模型时避免梯度消失/爆炸。因此,如果您有很多层,这一点特别重要。您可以阅读提供的论文以了解更多详细信息。

【讨论】:

    猜你喜欢
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    • 2020-01-15
    • 2020-03-08
    • 1970-01-01
    • 2018-04-09
    相关资源
    最近更新 更多