我正在实现花朵识别 - 数据集的花朵类型很少。 数据集总共包含约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。
- 尝试减少卷积层的数量
如果您希望我们尝试使用数据集模型,请更新数据集的链接。
我认为您有足够的数据样本。我建议您尝试以下方法:
- 从卷积层中删除激活。
- 在每个卷积层之后,应用 BatchNormazalization
- 在每个批次规范化之后,现在应用激活,例如 Relu
您还可以尝试增加卷积层中的内核数量并减少批量大小,可能是 32 或 16