我正在尝试让我的学校项目使用tensorflow使代码识别数字。但是我一直收到这个错误。有人可以帮我吗?太谢谢你了!
尝试像展平,改变大小等,但是没有效果...
这是我的代码:
import tensorflow as tf
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(512, activation=tf.nn.relu),
tf.keras.layers.Dropout(0.2),
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=1)
model.evaluate(x_test, y_test)
# Part 3 - Making new predictions
import numpy as np
from keras.preprocessing import image
import keras
test_image = image.load_img('Number 8.jpg', target_size=(28, 28))
test_image = image.img_to_array(test_image)
test_image = np.expand_dims(test_image, axis=0)
result = model.predict(test_image)
print(np.argmax(result[0]))
预计为3的数组
答案 0 :(得分:2)
我认为这是来自此行
tf.keras.layers.Flatten(input_shape=(28,28)),
您可以将其替换为
tf.keras.layers.Flatten()
即使您的图像是(28,28),训练时也会有一个批次尺寸[batch_size, 28,28]
。由于您没有在model.fit
中传递批量大小,因此将使用默认值。