Tensorflow keras.model.predict raise ValueError:检查输入时出错

Tensorflow keras.model.predict raise ValueError:检查输入时出错,tensorflow,machine-learning,keras,neural-network,Tensorflow,Machine Learning,Keras,Neural Network,我在MNIST数据集上训练了一个基本的神经网络模型。以下是培训的代码:(导入省略) 我想看看这个模型是如何与我自己的输入一起工作的,所以我在他的帮助下编写了一个预测脚本。我的预测代码是:(略) 首先,我不明白这行的目的: im2arr = im2arr.reshape(1, 28, 28, 1) 如果有人能解释为什么这条线是必要的,那将是非常有帮助的 第二,这一行抛出以下错误: ValueError: Error when checking input: expected flatten_in

我在MNIST数据集上训练了一个基本的神经网络模型。以下是培训的代码:(导入省略)

我想看看这个模型是如何与我自己的输入一起工作的,所以我在他的帮助下编写了一个预测脚本。我的预测代码是:(略)

首先,我不明白这行的目的:

im2arr = im2arr.reshape(1, 28, 28, 1)
如果有人能解释为什么这条线是必要的,那将是非常有帮助的

第二,这一行抛出以下错误:

ValueError: Error when checking input: expected flatten_input to have 3 dimensions, but got array with shape (1, 28, 28, 1)

这里缺少什么?

第一个维度用于批量大小。它由
keras.model
内部添加。所以这一行只是将其添加到图像数组中

im2arr = im2arr.reshape(1, 28, 28, 1)
您得到的错误是因为用于培训的
mnist dataset
中的一个示例具有形状(28,28),因此输入层也是如此。要消除此错误,需要将此行更改为

im2arr = img.reshape((1, 28, 28))
im2arr = im2arr.reshape(1, 28, 28, 1)
im2arr = img.reshape((1, 28, 28))