【问题标题】:Using Dropout on Convolutional Layers in Keras在 Keras 的卷积层上使用 Dropout
【发布时间】:2019-08-09 09:51:18
【问题描述】:

我已经实现了一个对一维输入信号进行批量归一化的卷积神经网络。我的模型的准确率非常好,约为 80%。这是我层的顺序:(Conv1D、Batch、ReLU、MaxPooling)重复6次,Conv1D、Batch、ReLU、Dense、Softmax。

我看过几篇文章说我不应该在卷积层上使用 dropout,而是应该使用批量归一化,所以我想通过用 dropout 层替换所有批量归一化层来试验我的模型,看看 dropout 是否真的会让我的表现更糟。

我的新模型结构如下:(Conv1D, Dropout, ReLU, MaxPooling) repeat 6 times, Conv1D, Dropout, ReLU, Dense, Softmax。我尝试了 0.1、0.2、0.3、0.4、0.5 的辍学率。我的新模型的性能只有 ~25%,比我原来的模型差很多,甚至比预测主导类 (~40%) 还要差。

我想知道性能上的巨大差异是否实际上是用 dropout 代替批量标准化的结果。还是我对如何使用 dropout 的误解。

【问题讨论】:

    标签: keras conv-neural-network dropout


    【解决方案1】:

    要直观了解如何使用批处理规范和 dropout,您应该首先了解这些层的作用:

    • 批量归一化使用在批次上计算的均值和方差来缩放和移动层输出,以便下一层的输入对内部协变量偏移更加稳健
    • Dropout 随机丢弃其输入的元素,教导后续层不要依赖特定的特征或元素,而是使用所有可用信息。这可以强制网络更好地泛化,并且是减少过度拟合的一种手段

    您所做的是将标准化层替换为向信息流添加额外噪声的层,这当然会导致准确性急剧下降。

    我对您的建议是像在您的第一个设置中一样使用批量规范,如果您想试验 dropout,请在将激活函数应用于前一层之后添加它。通常,dropout 用于规范非常容易过拟合的密集层。试试这个:

    1. 6 x(Conv1D、Batch、ReLU、MaxPooling)
    2. 1 x(Conv1D、Batch、ReLU)
    3. Dropout、Dense、Softmax

    【讨论】:

      猜你喜欢
      • 2019-11-24
      • 1970-01-01
      • 2019-06-16
      • 1970-01-01
      • 1970-01-01
      • 2016-12-23
      • 2017-07-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多