MNIST模型在测试图像上的预测不准确,尽管其训练和测试准确率很高

我正在尝试创建一个能够预测手写数字的模型。我使用了下面的架构训练了一个Keras模型,并在测试过程中看到了接近99%的准确率。然而,我决定从互联网上下载一些黑白数字的图片,并使用OpenCV将它们的尺寸缩小到28×28,以尝试使用我的训练模型进行预测。在测试了所有10个数字后,我的模型仅正确预测了4/10,意味着它的得分只有40%。

为什么会发生这种情况?我能做些什么来解决这个问题?

我使用的MNIST数据集在这里:https://www.kaggle.com/oddrationale/mnist-in-csv

我测试的图片在这里:https://drive.google.com/open?id=1G0CMK0ZPI1JIX2cYXNRt3Qsq_YpjlMjX

#architecturemodel = Sequential()model.add(Conv2D(32, (3, 3), padding='same',                 input_shape=x_train.shape[1:]))model.add(Activation('relu'))model.add(Conv2D(32, (3, 3)))model.add(Activation('relu'))model.add(MaxPooling2D(pool_size=(2, 2)))model.add(Dropout(0.25))model.add(Conv2D(64, (3, 3), padding='same'))model.add(Activation('relu'))model.add(Conv2D(64, (3, 3)))model.add(Activation('relu'))model.add(MaxPooling2D(pool_size=(2, 2)))model.add(Dropout(0.25))model.add(Flatten())model.add(Dense(512))model.add(Activation('relu'))model.add(Dropout(0.5))model.add(Dense(num_classes))model.add(Activation('softmax'))
#Code for minmizingimg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)img = cv2.resize(img,(28,28))#turning the 28x28 array into a (1, 28, 28, 1) numpy array for the model to process#dividing each value by 255. During the training, each grayscale pixel value was treated the same wayfor i in range(28):    temp = []    for x in range(28):        temp.append([img[i][x]/255])    pendo.append(temp)img = np.array([pendo]).astype("float32")#predicting the imagemodel = load_model('MNIST.h5')classes = model.predict(img)

回答:

MNIST并不是一个用于学习完全通用数字识别模型的数据集,它只是一个学术基准,而且是一个非常古老的基准,因此获得接近99%的测试准确率非常容易,但这并不意味着模型具有任何泛化能力。

最终,这不是一个编程问题,这一点应该很清楚,不是代码的问题,而是数据的问题。你拥有的图像与MNIST训练集中的图像差异太大。

Related Posts

在使用k近邻算法时,有没有办法获取被使用的“邻居”?

我想找到一种方法来确定在我的knn算法中实际使用了哪些…

Theano在Google Colab上无法启用GPU支持

我在尝试使用Theano库训练一个模型。由于我的电脑内…

准确性评分似乎有误

这里是代码: from sklearn.metrics…

Keras Functional API: “错误检查输入时:期望input_1具有4个维度,但得到形状为(X, Y)的数组”

我在尝试使用Keras的fit_generator来训…

如何使用sklearn.datasets.make_classification在指定范围内生成合成数据?

我想为分类问题创建合成数据。我使用了sklearn.d…

如何处理预测时不在训练集中的标签

已关闭。 此问题与编程或软件开发无关。目前不接受回答。…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注