在图像分类中提高精度曲线的平滑度

问题描述

我使用TILDA图像数据集开发了卷积神经网络,使用以下模型可以提供90%以上的准确性。我对模型使用了4个批次和100个时期。

model = keras.Sequential([
    layers.Input((30,30,1)),layers.Conv2D(8,2,padding='same',activation='relu',kernel_regularizer=regularizers.l2(0.01)),layers.Batchnormalization(),layers.Conv2D(16,layers.Conv2D(32,activation='sigmoid',layers.MaxPooling2D(),layers.Flatten(),layers.Dropout(0.5),layers.Dense(5,activation = "softmax"),])

使用上面的模型,我可以绘制以下图形来提高训练和验证的准确性。

enter image description here

您对提高这些曲线的平滑度有什么建议吗?得到这样的曲线的可能原因是什么?感谢您提出的改进此模型的建议。

解决方法

以下内容可能有助于获得更平滑的曲线:

  1. 永远不要在最后一层之前使用dropout。模型中的MaxPool + Dropout丢弃流入最终层的数据的87.5%。避免池化,除非需要全局池或自适应池以获取固定形状的输出。如果必须合并,则需要大量内核来补偿信息丢失。

  2. 使用较低的学习率。从训练曲线可以看出,该模型指向的是最小值,但有多个障碍。

  3. 您是否在没有动力的情况下使用SGD?如果是,请介绍势头。还要考虑具有内置动量的自适应优化器,例如Adam。

  4. 为什么在sigmoid之间?乙状结肠降低了梯度幅度,使学习变慢。

  5. 如果只关心曲线,而不受参数数量的限制,请考虑再添加一些层和/或通道。