2017-09-22 76 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函數。

希望這個答案可以幫助你。