0

我正在实施花卉识别 - 数据集的花卉种类很少。该数据集总共包含大约 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)

准确度标尺

损失规模

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

4

2 回答 2

0

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

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

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

于 2020-10-28T20:39:53.157 回答
0

根据训练和验证指标,模型似乎过度拟合。这就是为什么训练准确度在提高而验证准确度似乎保持不变的原因。过度拟合的原因是缺乏训练样本。您可能必须增加训练样本的数量。下面一一尝试。

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

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

于 2019-09-04T11:54:11.613 回答