![](/img/trans.png)
[英]Why are my neural network predictions correct when applied to MNIST hand-drawn images, but incorrect when applied to my own hand-drawn images?
[英]How do I use my own Hand-Drawn Image in TensorFlow Number Recognition
我有一些基本的 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
下面是我可以做出预测的地方。 我想更改代码,以便可以根据自己的手绘图像(标记为“test_image.jpg”)进行预测:
predictions = model.predict([x_test])
import numpy as np
print(np.argmax(predictions[0]))
任何想法都会非常有帮助!
由于您的 model 是在黑白图像上训练的,因此您只有一个通道,您需要将图像转换为灰度:
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]))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.