gpt4 book ai didi

machine-learning - 尽管 MNIST 模型具有很高的训练和测试精度,但仍错误地预测测试图像

转载 作者:行者123 更新时间:2023-11-30 09:27:59 25 4
gpt4 key购买 nike

我正在尝试创建一个可以预测手写数字的模型。我使用以下架构训练了 Keras 模型,并在测试过程中看到了接近 99% 的准确率。然而,我决定从互联网上获取一些黑白数字的图片,并使用 OpenCV 将它们的大小最小化到 28x28,以尝试使用我训练过的模型来预测它们。测试完所有 10 个数字后,我的模型仅正确预测了 4/10,这意味着它的得分为 40%。

为什么会发生这种情况?我可以采取什么措施来解决它?

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

以下是我正在测试的图像: https://drive.google.com/open?id=1G0CMK0ZPI1JIX2cYXNRt3Qsq_YpjlMjX

#architecture
model = 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 minmizing
img = 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 way

for 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 image
model = load_model('MNIST.h5')
classes = model.predict(img)

最佳答案

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

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

关于machine-learning - 尽管 MNIST 模型具有很高的训练和测试精度,但仍错误地预测测试图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57489307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com