2017-08-02 90 views
0

我使用的下一個keras基於架構(article):爲什麼使用keras Conv2D圖層時會出現錯誤?檢查時出現錯誤:

model = Sequential() 
model.add(Conv2D(32, (3, 3), input_shape=(150, 150, 3))) 
... 
model.fit_generator(
    train_generator, 
    steps_per_epoch=nb_train_samples // batch_size, 
    epochs=epochs, 
    validation_data=validation_generator, 
    validation_steps=nb_validation_samples // batch_size) 

model.save_weights('first_try.h5') 

from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img 

img = load_img('test_data/a1.jpg') # this is a PIL image 
img = img.resize((150, 150)) 
x = img_to_array(img) 

prediction = model.predict(x) 
print(prediction) 

ValueError異常預期conv2d_1_input有4個維度,但得到了陣列形狀(150,150,3)

燦你請告訴我如何解決它?

回答

1

您正在向模型中添加單個樣本,而該樣本預計會有一批樣本,即4個預期維度來自:batch_size + img_shape。

一個很多方法可以得到你想要的單幅圖像是

x = np.array([img]) 
+0

還我發現X = np.expand_dims(X,軸= 0) –

+0

@OlegDats準確,甚至一個簡單的'X .reshape(1,* img.shape)'應該可以工作。 – 5agado

相關問題