如何提高卷积神经网络的准确性



我正在实现花朵识别 - 数据集的花朵类型很少。 数据集总共包含约4000张图像

我的代码 -

model = Sequential()
model.add(Conv2D(32, (3, 3), padding='same', input_shape=(32, 32, 3), activation="relu"))
model.add(Conv2D(32, (3, 3), activation="relu"))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.5))
model.add(Conv2D(64, (3, 3), padding='same', activation="relu"))
model.add(Conv2D(64, (3, 3), activation="relu"))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(512, activation="relu"))
model.add(Dropout(0.5))
model.add(Dense(5, activation="softmax"))
model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])
history=model.fit(x_train,y_train,batch_size=64,epochs=7,validation_data=(x_test, y_test),shuffle=True)

由此,我得到了准确性和损失

精度标度

损失规模

然后,我需要更高的准确性。所以,我只是增加 epochs=30,结果是

(对于纪元 = 30(

精度标度

损失规模

我知道神经网络设置随机权重,以便我们得到不同的结果。但是我怎样才能提高准确性。我是神经网络的新手。将不胜感激一些解释。谢谢

根据训练和验证指标,模型似乎过度拟合。这就是为什么训练准确性在提高,而验证准确性似乎保持不变的原因。过度拟合的原因是缺少训练样本。 您可能需要增加训练样本的数量。逐个尝试以下操作。

  • 将辍学率降低到 ~0.2。
  • 尝试减少卷积层的数量

如果您希望我们尝试使用数据集模型,请更新数据集的链接。

我认为您有足够的数据样本。我建议您尝试以下方法:

  1. 从卷积层中删除激活。
  2. 在每个卷积层之后,应用 BatchNormazalization
  3. 在每个批次规范化之后,现在应用激活,例如 Relu

您还可以尝试增加卷积层中的内核数量并减少批量大小,可能是 32 或 16

最新更新