title: Keras: model.predict for a single image
body: <p>I'd like to make a prediction for a single image with Keras. I've trained my model so I'm just loading the weights. </p>
  
  <pre><code>from keras.preprocessing.image import ImageDataGenerator
  from keras.models import Sequential
  from keras.layers import Conv2D, MaxPooling2D
  from keras.layers import Activation, Dropout, Flatten, Dense
  from keras import backend as K
  import numpy as np
  import cv2
  
  # dimensions of our images.
  img_width, img_height = 150, 150
  
  
  
  def create_model():
    if K.image_data_format() == 'channels_first':
      input_shape = (3, img_width, img_height)
    else:
      input_shape = (img_width, img_height, 3)
  
    model = Sequential()
    model.add(Conv2D(32, (3, 3), input_shape=input_shape))
    model.add(Activation('relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
  
    model.add(Conv2D(32, (3, 3)))
    model.add(Activation('relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
  
    model.add(Conv2D(64, (3, 3)))
    model.add(Activation('relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
  
    model.add(Flatten())
    model.add(Dense(64))
    model.add(Activation('relu'))
    model.add(Dropout(0.5))
    model.add(Dense(1))
    model.add(Activation('sigmoid'))
  
    return model
  
  
  img = cv2.imread('./test1/1.jpg')
  model = create_model()
  model.load_weights('./weight.h5')
  model.predict(img)
  </code></pre>
  
  <p>I'm loading the image using: </p>
  
  <pre><code>img = cv2.imread('./test1/1.jpg')
  </code></pre>
  
  <p>And using the predict function of the model:</p>
  
  <pre><code> model.predict(img)
  </code></pre>
  
  <p>But I get the error:</p>
  
  <pre><code>ValueError: Error when checking : expected conv2d_1_input to have 4 dimensions, but got array with shape (499, 381, 3)
  </code></pre>
  
  <p>How should I proceed to have predictions on a single image ?</p>