我正在研究一个用于多类图像分类的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),参数如学习率和不同的层,但结果相似。我希望损失下降和准确性增加,没有平坦线。
1条答案
按热度按时间xwbd5t1u1#
在我看来,模型并没有学习,它对所有输入都返回相同的预测。
model.add(Dense(6, activation = 'softmax'))
val_accuracy
或val_loss
,并且当这些指标停止增加或减少时,训练阶段终止?categorical_crossentropy
?或者试试sparse_categorical_crossentropy
?