Python 如何在TensorFlow数字识别中使用自己的手绘图像

Python 如何在TensorFlow数字识别中使用自己的手绘图像,python,tensorflow,machine-learning,keras,deep-learning,Python,Tensorflow,Machine Learning,Keras,Deep Learning,我有一些基本的Python代码来创建一个非常基本的神经网络,用于对MNIST数据集中的手绘数字进行分类 网络正在工作,我想对一幅手绘图像进行预测,该图像不属于MNIST数据集的一部分 这是我的代码: import tensorflow as tf mnist = tf.keras.datasets.mnist # 28x28 images of handwritten digits (0-9) (x_train, y_train), (x_test, y_test) = mnist.load

我有一些基本的Python代码来创建一个非常基本的神经网络,用于对MNIST数据集中的手绘数字进行分类

网络正在工作,我想对一幅手绘图像进行预测,该图像不属于MNIST数据集的一部分

这是我的代码:

import tensorflow as tf

mnist = tf.keras.datasets.mnist # 28x28 images of handwritten digits (0-9)

(x_train, y_train), (x_test, y_test) = mnist.load_data()

x_train = tf.keras.utils.normalize(x_train, axis=1)
x_test = tf.keras.utils.normalize(x_test, axis=1)

model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu))
model.add(tf.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=3)

val_loss, val_acc = model.evaluate(x_test, y_test)
print(val_loss, val_acc)

import matplotlib.pyplot as plt
predictions = model.predict([x_test])

import numpy as np

print(np.argmax(predictions[0]))
下面是我可以进行预测的地方。我想更改代码,以便根据自己的手绘图像(标记为“test_image.jpg”)进行预测:

import tensorflow as tf

mnist = tf.keras.datasets.mnist # 28x28 images of handwritten digits (0-9)

(x_train, y_train), (x_test, y_test) = mnist.load_data()

x_train = tf.keras.utils.normalize(x_train, axis=1)
x_test = tf.keras.utils.normalize(x_test, axis=1)

model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu))
model.add(tf.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=3)

val_loss, val_acc = model.evaluate(x_test, y_test)
print(val_loss, val_acc)

import matplotlib.pyplot as plt
predictions = model.predict([x_test])

import numpy as np

print(np.argmax(predictions[0]))

任何想法都会非常有用

由于您的模型是在黑白图像上训练的,因此您只有一个通道,需要将图像转换为灰度:

import numpy as np
import cv2

img = cv2.imread('test_image.jpg')
img = cv2.resize(img, (28,28))
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img = np.reshape(img, [1,28,28])

predictions = model.predict(img)
print(np.argmax(predictions[0]))

hi@kluu-当尝试使用imshow时,我得到以下错误。有什么想法吗<代码>类型错误:图像数据的形状(10,)无效哦,你想打印什么?如果要显示处理后的图像,它应该是
plt.imshow(img[0,:,:])
.hmm有趣-显示处理后的图像时,它仍然是BGR颜色格式(不是灰度)。有什么想法吗,@kluu?我的错,您可能需要指定colormap参数:
plt.imshow(img[0,:,:],cmap='gray')