用一幅图像喂养keras(预测)

时间:2018-07-24 19:26:34

标签: python tensorflow machine-learning keras

我用Keras训练了一个模型(二进制图像分类,再训练的Xception模型)。现在,如果我喂它

model.predict(np.random.rand(1, 300, 300, 3))

我得到输出

array([[0.68225867, 0.3177413 ]], dtype=float32)

这就是我要获得的真实图像。但是,当我这样输入真实图像时:

from scipy.misc import imread,imresize
x=imread('processed_dataset/test/EM/bull_212.jpg',mode='RGB')
x=imresize(x,(300,300))
x=np.invert(x)
x=x.reshape(-1,300,300,3)
model.predict(x)

我总是得到相同的输出:

array([[1., 0.]], dtype=float32)

无论输入图像如何,模型都会输出[1.,0]。如果以这种方式输入图像,则是相同的:

img = image.load_img('processed_dataset/test/EM/bull_212.jpg', target_size=(img_width, img_height))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)


images = np.vstack([x])
model.predict(images, batch_size=1)

我的想法是:如果输入np.random'图像'可以得到预期的结果,那么问题就出在我如何输入真实图像上。 如何正确执行此操作以使其达到预期效果?

1 个答案:

答案 0 :(得分:1)

似乎您没有应用用于训练模型的归一化,如果您不这样做,那么输入将完全不同,这将使神经元饱和,产生不一致的输出。