Zeta11
Zeta11

Reputation: 881

How to label test data using trained model with keras?

I am working on the following keras convolutional neural network tutorial https://gist.github.com/fchollet/0830affa1f7f19fd47b06d4cf89ed44d

After training the model I want to test the model on sample images, and also label the images. I realize that I have to use predict method that generates an array that shows which label gets what score for a particular image. But I am having trouble using this method. If the images are in the folder test_images and there are 20 of them, how do I test these images and get the prediction?

This is how I've gotten with one image (even though I want it for multiple images):

image = cv2.imread('test1.jpg')
image = cv2.resize(image,(224,224))
features = np.swapaxes(np.swapaxes(image, 1, 2), 0, 1)
predictions = model.predict(features)

This throws the following error:

ValueError: Error when checking : expected conv2d_1_input to have 4 dimensions, but got array with shape (3, 224, 224)

Thank you very much!

Some of the questions I consulted before:

Simple Neural Network in Python not displaying label for the test image https://github.com/fchollet/keras/issues/315

Upvotes: 1

Views: 1220

Answers (1)

Dr. Snoopy
Dr. Snoopy

Reputation: 56367

model.predict works by processing an array of samples, not just one image, so you are missing the batch/samples dimension, which in your case would only be just one image. You just have to reshape the array:

features = features.reshape((1, 3, 224, 224)

And then pass it to predict.

Upvotes: 2

Related Questions