【问题标题】:Why does the accuracy of my convolutional neural network increase after removing the fully connected layer before the final softmax layer?为什么在最终的 softmax 层之前移除全连接层后,我的卷积神经网络的准确率会提高?
【发布时间】:2020-10-29 18:50:38
【问题描述】:

我设计了卷积神经网络(tf.Keras),它几乎没有具有不同内核大小的并行卷积单元。然后,该卷积层的每个输出结果都被馈送到另一个并行的卷积单元中。然后连接所有输出。下一个展平完成。之后,我添加了全连接层并连接到最终的 softmax 层以进行多类分类。我对其进行了训练,并在验证测试中取得了不错的成绩。

但是我去掉了全连接层,准确率比上一个要高。 请有人可以解释一下,它是如何发生的,这将非常有帮助。 感谢您的宝贵时间。 参数如下。

【问题讨论】:

  • 准确度是指训练还是验证?
  • 两者都增加了。并且参数数量比之前具有全连接层的模型少?

标签: python tensorflow deep-learning neural-network


【解决方案1】:

当您移除一个层时,您的模型将不太可能过度拟合训练集。因此,通过使网络更浅,您可以使您的模型对未知示例更加稳健,并提高验证准确度。

由于您的训练准确性也在提高,这可能表明 -

  1. 梯度爆炸或消失。您可以尝试使用谨慎的weight initialization、正确的regularization、添加shortcutsgradient clipping 来解决此问题。
  2. 您没有训练足够的 epoch 来学习更深的网络。您可以多尝试几个 epoch。
  3. 您没有足够的数据来训练更深层次的网络。

【讨论】:

  • 感谢您的回复。我在验证损失最小值上使用了提前停止。我正在使用一维卷积层。我有更大的数据集,2892 个类有近 1,565,976 个样本,每个类有近 100 个样本。
  • 提前停止会减少方差,但会增加偏差。所以这也可能会影响你的训练准确性。
【解决方案2】:

消除密集层可减少过度拟合的趋势。因此,只要您的模型的训练准确度保持较高,您的验证损失就会有所改善。或者,您可以添加一个额外的 dropout 层。您还可以通过使用正则化器来减少过度拟合的趋势。相关文档是 here.

【讨论】:

    猜你喜欢
    • 2016-08-02
    • 2018-12-04
    • 2021-07-14
    • 2019-01-30
    • 2017-04-04
    • 2021-12-12
    • 2020-10-16
    • 1970-01-01
    • 2019-05-06
    相关资源
    最近更新 更多