2017-09-22 50 views
2

下面是代码的Keras文档页面:如何将多个图像输入Keras特征提取?

from keras.applications.vgg16 import VGG16 
from keras.preprocessing import image 
from keras.applications.vgg16 import preprocess_input 
import numpy as np 

model = VGG16(weights='imagenet', include_top=False) 

img_path = 'elephant.jpg' 
img = image.load_img(img_path, target_size=(224, 224)) 
x = image.img_to_array(img) 
x = np.expand_dims(x, axis=0) 
x = preprocess_input(x) 

features = model.predict(x) 

这里的单个图像被馈送。

我已经提取了几个(12)图像到列表中,并将该列表转换为numpy数组。我想将图像列表提供给Keras特征提取器。

换句话说,我想喂它多个图像。我怎么能这样做呢?

+1

你只是试图运行'model.predict(table_of_images)'? –

+0

我试图将numpy数组作为一个整体。这并不奏效。当你说'model.predict(table_of_images)'时,你能详细说明吗? – TheTank

+1

那么错误是什么? –

回答

1

代码中的这一行x = np.expand_dims(x, axis=0)将单个图像转换为单个图像的数组。所以x的形状将是(1,224,224,3)。

在你的例子中,你已经有12个图像,你将它保存在numpy数组中。检查你的numpy数组的形状。它必须调整到(12,224,224,3)。通道数可以是1,3或4.然后,您将不得不对其进行预处理。检查此代码在preprocess_input(x)函数中发生了什么。之后,您可以传递给model.predict函数。

希望这个答案可以帮助你。