张量流图像形状误差

时间:2016-12-16 21:56:33

标签: machine-learning neural-network tensorflow artificial-intelligence keras

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

我正在使用带有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作为...

enter image description here

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

enter image description here

2 个答案:

答案 0 :(得分:2)

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) 

答案 1 :(得分:0)

enter image description here

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

该错误实际上告诉我,我需要传递我的尺寸为[1,250,250,3],这是一个简单的修复;我必须说我不确定为什么TF期望这个维度按照这个顺序查看它看起来不对,所以这里需要更多的研究。

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

取代转置,我可能试图调用x_reshape = img.reshape((1,250,250,3)),这取决于我在重新整理TS时发现的维度顺序

感谢提示Sygi:)