我从头开始创建了一个 TensorFlow CNN 来识别某些类型的动物。我相信该模型正在运行,因为我正在获取有关训练数据的数据,并且在运行代码时在我的目录中看到了一个新文件夹。当我尝试运行代码以针对下方的新单张图像进行预测时,出现此错误。我是 TensorFlow 的新手,所以我不确定自己做错了什么。该图像位于主目录中,是一个 .jpg 图像。如果您需要更多信息,请与我们联系。谢谢CATEGORIES = ["cane", "cavallo", "elefante", "farfalla", "gallina", "gatto", "mucca", "pecora", "ragno", "scoiattolo"]def prepare(file):IMG_SIZE = 50img_array = cv2.imread(file, cv2.IMREAD_GRAYSCALE)new_array = cv2.resize(img_array, (IMG_SIZE, IMG_SIZE))return new_array.reshape(-1, IMG_SIZE, IMG_SIZE, 1)model = tf.keras.models.load_model("CNN.model")from PIL import Imageimport numpy as npfrom skimage import transformimage = load('test.jpg')model.predict(image)prediction = model.predict([image])prediction = list(prediction[0])print(CATEGORIES[prediction.index(max(prediction))])
2 回答
暮色呼如
TA贡献1853条经验 获得超9个赞
我想你只是忘了应用你的 def 准备(文件)。
你能试一下吗
model.predict(prepare(image))
这就是为什么 RGB 和预期的灰度不匹配的原因。因为你加载它的方式,它是 RGB,因为你的准备功能没有应用。应用后,它应该是一个灰度图像并且应该可以工作。
牧羊人nacy
TA贡献1862条经验 获得超7个赞
所以错误很明显。
expected axis -1 of input shape to have value 1 but received input with shape [None, 256, 256, 3]
该错误表明提供给模型的输入通道是3
由于RGB
image 但您的模型需要带有 channel 的图像1
。
这意味着您的模型需要一张grayscale
图像,而您在预测时提供了一张RGB
图像。
您应该提供一个图像,[None, 256, 256, 1]
其中None
代表batch_size
。
您能否通过添加型号代码来确认这一点?
更新:
你刚刚更新了你的问题,所以在这里我可以看到你正在用灰度图像训练你的模型。
X = np.array(X).reshape(-1, IMG_SIZE, IMG_SIZE, 1)
但我认为当predicting
您使用 RGB 图像调用时。
添加回答
举报
0/150
提交
取消