为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我不能在这张单张图片上运行我的 tensorflow CNN 模型?

为什么我不能在这张单张图片上运行我的 tensorflow CNN 模型?

开满天机 2023-04-18 16:02:35
我从头开始创建了一个 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,因为你的准备功能没有应用。应用后,它应该是一个灰度图像并且应该可以工作。


查看完整回答
反对 回复 2023-04-18
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

所以错误很明显。

expected axis -1 of input shape to have value 1 but received input with shape [None, 256, 256, 3]

该错误表明提供给模型的输入通道是3由于RGBimage 但您的模型需要带有 channel 的图像1

这意味着您的模型需要一张grayscale图像,而您在预测时提供了一张RGB图像。

您应该提供一个图像,[None, 256, 256, 1]其中None代表batch_size

您能否通过添加型号代码来确认这一点?

更新:

你刚刚更新了你的问题,所以在这里我可以看到你正在用灰度图像训练你的模型。

X = np.array(X).reshape(-1, IMG_SIZE, IMG_SIZE, 1)

但我认为当predicting您使用 RGB 图像调用时。



查看完整回答
反对 回复 2023-04-18
  • 2 回答
  • 0 关注
  • 85 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信