Tensorflow 图像形状错误

Tensorflow Image Shape Error

我已经训练了一个分类器,现在我想传递任何单个图像。

我正在使用以 Tensorflow 作为后端的 keras 库。

我遇到一个错误,我似乎无法通过

img_path = '/path/to/my/image.jpg'

import numpy as np
from keras.preprocessing import image
x = image.load_img(img_path, target_size=(250, 250))

x = image.img_to_array(x)
x = np.expand_dims(x, axis=0)

preds = model.predict(x) 

我是否需要重塑数据以将 None 作为第一个维度?我很困惑为什么 Tensorflow 会期望 None 作为第一个维度?

Error when checking : expected convolution2d_input_1 to have shape (None, 250, 250, 3) but got array with shape (1, 3, 250, 250)

我想知道我训练的模型的架构是否存在问题?

编辑:如果我调用 model.summary() 将 convolution2d_input_1 作为...

编辑:我确实尝试了下面的建议,但使用 numpy 转置而不是 tf - 似乎仍然遇到同样的问题!

None 匹配任何数字。通常,当您将一些数据传递给模型时,预计您会传递维度张量:None x data_size,这意味着第一个维度是任何维度并表示批量大小。在您的情况下,问题是您传递了 250 x 250 x 3,而预期是 3 x 250 x 250。尝试:

x = image.load_img(img_path, target_size=(250, 250))
x_trans = tf.transpose(x, perm=[2, 0, 1])
x_expanded = np.expand_dims(x_trans, axis=0)
preds = model.predict(x_expanded) 

好的,所以使用反馈 rom Sygi 我想我已经解决了一半,

错误实际上是告诉我我需要将我的维度作为 [1, 250, 250, 3] 传递,所以这很容易解决;我必须说我不确定为什么 TF 期望按此顺序显示尺寸,因为查看文档时它似乎不正确,因此需要在这里进行更多研究。

继续前进我不确定转置是否可行,就好像我使用不同的输入图像尺寸可能不在同一顺序意味着转置不能正常工作,

我可能尝试调用 x_reshape = img.reshape((1, 250, 250, 3)) 而不是转置,这取决于我在重塑中发现的关于维度顺序的信息TS

感谢 Sygi 的提示 :)