python - 我的神经网络有什么问题,它给出了错误的预测

标签 python opencv tensorflow jupyter-notebook jupyter

因此,我用来自keras的示例训练数据来训练我的神经网络,然后用自己手写的油漆数字为其输入。

import os
import cv2
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow import keras
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 = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation=tf.nn.relu),
keras.layers.Dense(10, activation=tf.nn.softmax)
])
 model.compile(optimizer='adam',
    loss='sparse_categorical_crossentropy',
    metrics=['accuracy'])

model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)

path = 'C:/Users/pewdu/Desktop/three.png'
img = cv2.imread(path)
new_img = cv2.resize(img, (28, 28))
new_img = new_img[:,:,0] / 255.0 # Take only first channel and normalize
new_img = np.expand_dims(new_img, axis=0) # Adding the dimension
print(new_img.shape) # it equals to (1, 28, 28)
prediction = model.predict(new_img)

问题在于,无论我输入多少数字,它都会给出错误的预测(总是只有一个固定数字)。例如,如果我给它编号3,它将响应为5,如果我给它编号另一个,它也将响应5。尽管它可以正确地用于示例测试数据。

我还认为问题可能在于我的手指与示例训练数据有不同的背景。我的照片发黄。
That's the image of my pictures

最佳答案

看起来您需要反转图像。原始图像的数字像素值较高,但似乎图像中的背景涂成黑色,数字涂成白色。您需要反转图形的颜色,只需将黑色更改为白色,将白色更改为黑色。

关于python - 我的神经网络有什么问题,它给出了错误的预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54388566/

相关文章:

python - 在没有pygame的情况下下载pygame游戏?

c++ - 如何访问二进制 Mat 图像中的像素值?

Android NDK 将参数传递给本地方法

python - 无法在 Google COLAB 上将我的 Dataframe 保存/导出为 CSV

c++ - 当设备设置为 CPU 时,为什么 TensorFlow 使用我的 GPU

python - 将带有整数键的字典转换为 numpy 数组

python - 形状统计

java - 在java中模拟一个不是参数的方法中的对象,类似于下面的python代码?

opencv - 使用 OpenCV 的增强现实 SDK

python - Tensorflow:如何在Python中获取图形输入和输出?