keras 图像分类CNN模型损失和准确性平线

utugiqy6  于 2023-05-29  发布在  其他
关注(0)|答案(1)|浏览(140)

我正在研究一个用于多类图像分类的CNN模型,而损失和准确性都显示为平线,值几乎保持不变。如果有任何错误,请您帮忙看看,如果有任何建议,请您多多指教。先谢谢你了。
损失和准确度:

输入数据

(X_train.shape,X_test.shape,y_train.shape,y_test.shape)(24296,32,32,1)(6075,32,32,1)(24296,6)(6075,6)
X_train:

y_train:

CNN代码

模型

model = Sequential()
model.add(Conv2D(16, (2,2), activation = 'relu', input_shape = (32,32,1)))
model.add(MaxPooling2D((2,2)))
model.add(Conv2D(32, (2,2), activation = 'relu'))
model.add(MaxPooling2D((2,2)))
model.add(Conv2D(64, (2,2), activation = 'relu'))
model.add(MaxPooling2D((2,2)))
model.add(Conv2D(128, (2,2), activation = 'relu')) 
model.add(MaxPooling2D((2,2)))
model.add(Flatten())
model.add(Dense(100, activation = 'relu'))
model.add(Dense(6, activation = 'softmax'))

编译

model.compile(loss = 'categorical_crossentropy',
              optimizer = optimizers.RMSprop(learning_rate=0.001),
              metrics = ['accuracy'])

提前停机配合

es = EarlyStopping(patience = 5, verbose=2)
history = model.fit(X_train, y_train,
                    validation_split = 0.2,
                    callbacks=[es],
                    epochs=100,
                    batch_size=64)

我检查了社区,尝试了不同的优化器(adam,sgd和RMSprop),参数如学习率和不同的层,但结果相似。我希望损失下降和准确性增加,没有平坦线。

xwbd5t1u

xwbd5t1u1#

在我看来,模型并没有学习,它对所有输入都返回相同的预测。

  • 你想预测的是6个班级吗?model.add(Dense(6, activation = 'softmax'))
  • 你的数据集足够大吗?如果没有足够的参数来表示数据,模型将有很高的损失。
  • 还有,你的模型什么时候应该停止?您是否正在监视val_accuracyval_loss,并且当这些指标停止增加或减少时,训练阶段终止?
  • 你是否对你的目标进行了One-Hot-Encode,以便使用categorical_crossentropy?或者试试sparse_categorical_crossentropy

相关问题