首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的MNSIT数字项目的每个预测都是错误的?

为什么我的MNSIT数字项目的每个预测都是错误的?
EN

Stack Overflow用户
提问于 2019-12-26 01:40:56
回答 2查看 113关注 0票数 1

我已经用Anaconda notebook完成了这个基本项目。一切运行正常,但我自己的数字图片的所有预测都是错误的。我正在使用MNIST数字集,我正在尝试用黑色背景和白色绘画来绘制我自己的手指。但每一个预测都是错误的。你能看到代码中遗漏了什么吗?

代码语言:javascript
复制
enter code here
# Install TensorFlow
import tensorflow as tf

# Import matplotlib library
import matplotlib.pyplot as plt 

#Import numpy
import numpy as np

#import cv
import cv2

#Dataset
mnist = tf.keras.datasets.mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
model = tf.keras.models.Sequential([

tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')])

model.compile(optimizer='adam',
          loss='sparse_categorical_crossentropy',
          metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
print("Evaluierung");
model.evaluate(x_test,  y_test)

plt.imshow(x_train[1], cmap="gray") # Import the image
plt.show() # Plot the image
predictions = model.predict([x_train]) # Make prediction, works perfect
print(np.argmax(predictions[1])) # Print out the number, works perfect

# my own picture, black background, white color, 28 px * 28 px in size
img = cv2.imread("bild1.png", cv2.IMREAD_GRAYSCALE)
plt.imshow(img) # Import the image
plt.show() # Plot the image

cv2.imshow("image",img)
cv2.waitKey(2000)
img = img/255.0
img = img.reshape(1,28,28)
pred = model.predict_classes(img)
print("Prediction: ", pred)

来自训练和测试数据的每个预测都是正确的,我自己的图片都是错误的,没有错误代码!如果你能帮我那就太好了

EN

回答 2

Stack Overflow用户

发布于 2019-12-26 05:39:18

你这样做并没有什么特别的问题。然而,对于为什么你会得到这些结果,我可以给出几点意见。

从JPEG/PNG加载图像

有时,当您使用图像加载库加载图像时,它们的值将被裁剪,而不是恰好在0-255之间。因此,在进行规范化时,请使用以下内容,

代码语言:javascript
复制
img = img - np.min(img)
img = img/np.max(img)

更多的概括

在原始的60000个样本上训练模型,并期望它在真实世界的数据上工作...好吧,那是行不通的。例如,与训练模型的数据相比,您将有以下不同之处。

  • 画笔笔划宽度
  • 角度在
  • 中绘制的数字字母的书写方式(例如,如果您查看数据集中的1(至少最多),它只是一个笔画,其中您的图像有两个笔画)

因此,如果希望模型执行得更好,请使用数据增强

  • 引入噪声
  • 随机rotation
  • Random scaling
  • Random brightness
  • Random cropping/scaling
  • etc.
票数 1
EN

Stack Overflow用户

发布于 2019-12-26 18:38:08

非常感谢你的回答

我按照你说的修改了规范化的代码,但这并没有改变任何东西。

然后我在谷歌中寻找一些手写的数字(在mnist数据库之外)的黑色背景,我调整了它的大小,并将它们用于预测->,令我惊讶的是,每一张照片都被正确识别!!所以我认为问题不在于我的代码,而在于我绘制手写数字的方式。我用photoshop制作,新的灰度模板,黑色背景,白色绘画,并将其大小调整为28 * 28像素。但我自己的画没有被识别正确-没有错误代码,只是一个错误的预测。你知道我的画出了什么问题吗??再次感谢!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59480642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档