2017-08-02 2 views
0

ich die nächsten keras basierte Architektur (article):Warum bekomme ich Fehler, wenn Keras Conv2D Schicht verwenden?

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: Fehler bei der Überprüfung: erwartete conv2d_1_input 4 Dimensionen haben, bekam aber Array mit Form (150, 150, 3)

Can Sie bitte beraten, wie kann ich es lösen?

Antwort

1

Sie geben dem Modell eine einzelne Probe, die stattdessen eine Charge von Proben erwartet, von der die erwarteten vier Dimensionen stammen: batch_size + img_shape.

Eine von vielen Möglichkeiten zu bekommen, was Sie für einzelne Bild wollen, ist

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

Ich habe auch x = np.expand_dims (x, Achse = 0) –

+0

@OlegDats genau gefunden, und sogar ein einfaches 'x .reshape (1, * img.shape) sollte funktionieren. – 5agado