Machine learning 张量流图像形状误差

Machine learning 张量流图像形状误差,machine-learning,neural-network,tensorflow,artificial-intelligence,keras,Machine Learning,Neural Network,Tensorflow,Artificial Intelligence,Keras,我已经训练了一个分类器,现在我想通过任何一个图像 我正在使用keras库,Tensorflow作为后端 我犯了一个错误,我似乎无法克服 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.ex

我已经训练了一个分类器,现在我想通过任何一个图像

我正在使用keras库,Tensorflow作为后端

我犯了一个错误,我似乎无法克服

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()

编辑:我确实在玩弄下面的建议,但使用numpy来代替tf进行转置-似乎仍然遇到了同样的问题


匹配任何数字。通常,当您将一些数据传递给模型时,需要传递维度张量:
None x data\u size
,这意味着第一个维度是任意维度,表示批量大小。在您的情况下,问题是您通过了
250x250x3
,而这应该是
3x250x250
。尝试:

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) 

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

这个错误实际上告诉我我需要以[1250250,3]的形式传递维度,所以这是一个简单的修复方法;我必须说,我不知道为什么TF会期望这个顺序的维度,因为看文档它似乎不正确,所以这里需要更多的研究

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

我可能不是在转置,而是尝试调用x_restrape=img.restrape((1250250,3)),这取决于我在TS的重塑中发现的关于维度顺序的内容


谢谢你的提示,Sygi:)

谢谢@Sygi,我尝试了一下,但我现在遇到了一个新错误。。。ValueError:参数必须是稠密张量:-得到了形状[250,250,3],但想要[]-好的,关于批量大小的理解,我假设是因为没有,所以你可以给它任何批量大小(有点愚蠢的假设)。我还想知道是否值得使用numpy来重塑数据,而不是tf?“ValueError:参数必须是稠密张量:-得到了形状[250,250,3],但想要[]”抱歉,让它更具可读性