Classification Keras模型分类良好,但预测概率始终为1.0或0.0

Classification Keras模型分类良好,但预测概率始终为1.0或0.0,classification,keras,conv-neural-network,Classification,Keras,Conv Neural Network,我正在使用Keras构建一个多类(3类)图像分类器。 我使用大约2000幅图像的数据集对以下模型进行了训练(1500次训练/500次验证) 这些是培训/验证和测试的数据 我获得了95%的训练准确率,92%的验证准确率和94%的另一个单独的图像块(除了数据集的2000) 因此,该模型似乎能够很好地进行分类。然而,我的问题是,输入图像的预测概率(使用函数predict_proba()获得)总是1.0或0.0。 类似地,如果我给一个不属于这三个类中任何一个的图像作为输入,我会期望一些低概率(在最相似的

我正在使用Keras构建一个多类(3类)图像分类器。 我使用大约2000幅图像的数据集对以下模型进行了训练(1500次训练/500次验证)

这些是培训/验证和测试的数据

我获得了95%的训练准确率,92%的验证准确率和94%的另一个单独的图像块(除了数据集的2000)

因此,该模型似乎能够很好地进行分类。然而,我的问题是,输入图像的预测概率(使用函数predict_proba()获得)总是1.0或0.0。 类似地,如果我给一个不属于这三个类中任何一个的图像作为输入,我会期望一些低概率(在最相似的类中可能更高),但我仍然在其中一个类中得到1.0,在其他类中得到0.0

是什么原因造成的?在我看来,这并没有过分合身。这个模型有什么问题吗? 可能是因为每个类的图像都非常相似,所以模型很快就对自己的决定过于自信了吗?

请看我对一个问题的回答
batch_size = 128
nb_classes = 3
nb_epoch = 25
img_rows, img_cols = 128, 128
input_shape = (1, img_rows, img_cols)

Y_train = np_utils.to_categorical(y_train, nb_classes)
Y_test = np_utils.to_categorical(y_test, nb_classes)

model = Sequential()
model.add(Convolution2D(32, 5, 5, border_mode='same', input_shape=input_shape))
model.add(Activation('relu'))
model.add(Convolution2D(64, 5, 5, border_mode='same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.2))
model.add(Flatten()) 
model.add(Dense(128))
model.add(Activation('relu'))
model.add(Dropout(0.25))
model.add(Dense(nb_classes, activation='softmax'))

lrate = 0.001
decay = lrate/nb_epoch
sgd = SGD(lr=lrate, momentum=0.9, decay=decay, nesterov=False)
model.compile(loss='categorical_crossentropy',
              optimizer=sgd,
              metrics=['accuracy'])

X_train = X_train.astype('float32')
X_test = X_test.astype('float32')
X_train /= 255
X_test /= 255
history = model.fit(X_train, Y_train,
              batch_size=batch_size,
              nb_epoch=nb_epoch,
              validation_data=(X_test, Y_test),
              shuffle=True,
              callbacks=early_stopping)