在Keras中在卷积层上使用Dropout

时间:2019-03-18 23:06:25

标签: keras conv-neural-network dropout

我已经实现了对一维输入信号进行批量归一化的卷积神经网络。我的模型具有约80%的相当不错的准确性。这是我的图层顺序:(Conv1D,Batch,ReLU,MaxPooling)重复6次,Conv1D,Batch,ReLU,Dense,Softmax。

我看过几篇文章说我不应该在卷积层上使用dropout,而是应该使用批处理规范化,所以我想通过将所有批处理规范化层替换为dropout层来试验我的模型,以查看dropout是否真的使我的表现更差。

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

我想知道性能上的巨大差异是否实际上是用辍学替换批处理规范化的结果。还是我对我应该如何使用辍学的误解。

1 个答案:

答案 0 :(得分:0)

要获得有关如何使用批处理规范和辍学的直觉,您应该首先了解这些层的作用:

  • 批处理归一化可缩放您的图层输出,并使用在该批处理中计算出的均值和方差进行平移,从而使下一层的输入对内部协变量平移更加健壮
  • Dropout随机删除其输入的元素,从而教导以下各层不依赖于特定功能或元素,而是使用所有可用信息。这样可以使网络更好地泛化,并且是减少过度拟合的一种手段

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

我对您的建议是使用批处理规范,就像在您的第一个设置中一样,如果您想尝试辍学,请在激活功能应用于上一层后添加。通常,辍学用于使很容易过度拟合的致密层规则化。试试这个:

  1. 6 x(Conv1D,批处理,ReLU,MaxPooling)
  2. 1 x(Conv1D,批次,ReLU)
  3. 降落,密集,Softmax