title: Issue retrieving ValueError: `decode_predictions` expects a batch of predictions
body: <p>I have the following code took it from Github to run a pre-trained model mobilenet_v2 <a href="https://github.com/vvigilante/mobilenet_v2_keras/blob/master/mobilenet_v2_keras.py" rel="nofollow noreferrer">https://github.com/vvigilante/mobilenet_v2_keras/blob/master/mobilenet_v2_keras.py</a>
  and trying to run it, however, I am facing some issue to run the code. I tried to import it from Keras. applications.mobilentnetv2 but it didn't resolve the issue.</p>
  <pre><code>from keras.applications.mobilenet_v2 import decode_predictions
  #from keras.applications.imagenet_utils import decode_predictions
  from keras.applications.imagenet_utils import preprocess_input
  
  def relu6(x):
    return K.relu(x, max_value=6)
  def _conv_block(inputs, filters, kernel, strides, use_bias=True):
    channel_axis = 1 if K.image_data_format() == 'channels_first' else -1
    if nlay &lt; 0 or nlay &gt; 16:
      basename = 'conv_%d' % (nlay + 1)
    else:
      basename = 'expanded_conv_%d_expand' % nlay
    x = Conv2D(filters, kernel, padding='same', strides=strides, name=basename, use_bias=use_bias) 
  (inputs)
    x = BatchNormalization(axis=channel_axis, name=basename + '_batch_normalization')(x)
    return Activation(relu6, name=basename + '_activation')(x)
  def _bottleneck(inputs, filters, kernel, t, s, r=False):
   global nlay
   channel_axis = 1 if K.image_data_format() == 'channels_first' else -1
   if t &gt; 1:
      tchannel = K.int_shape(inputs)[channel_axis] * t
      x = _conv_block(inputs, tchannel, (1, 1), (1, 1), use_bias=False)
   else:
      x = inputs
   x = DepthwiseConv2D(kernel, strides=(s, s), depth_multiplier=1, padding='same',
                      name='expanded_conv_%d_depthwise' % nlay, use_bias=False)(x)
   x = BatchNormalization(axis=channel_axis, name='expanded_conv_%d_depthwise_batch_normalization' % nlay)(x)
   x = Activation(relu6, name='expanded_conv_%d_depthwise_activation' % nlay)(x)
   x = Conv2D(filters, (1, 1), strides=(1, 1), padding='same', name='expanded_conv_%d_project' % nlay, use_bias=False)(
      x)
   x = BatchNormalization(axis=channel_axis, name='expanded_conv_%d_project_batch_normalization' % nlay)(x)
  
   if r:
      x = add([x, inputs], name=&quot;expanded_conv_%d_add&quot; % nlay)
  
   nlay += 1
   return x
  def _inverted_residual_block(inputs, filters, kernel, t, strides, n):
    x = _bottleneck(inputs, filters, kernel, t, strides)
    for i in range(1, n):
      x = _bottleneck(x, filters, kernel, t, 1, True)
    return x
  def roundup(n):
    x = (n + 6) // 8
    return x * 8
  def MobileNetv2(input_shape, k, width_multiplier=1.0):
    global nlay
    nlay = -1
    inputs = Input(shape=input_shape)
    x = _conv_block(inputs, roundup(int(32 * width_multiplier)), (3, 3), strides=(2, 2), use_bias=False)
    nlay += 1
    fix = 0
    if width_multiplier - 1.3 &lt; 0.01:
      fix = -2
    x = _inverted_residual_block(x, roundup(int(16 * width_multiplier)), (3, 3), t=1, strides=1, n=1)
    x = _inverted_residual_block(x, roundup(int(24 * width_multiplier)), (3, 3), t=6, strides=2, n=2)
    x = _inverted_residual_block(x, roundup(int(32 * width_multiplier)), (3, 3), t=6, strides=2, n=3)
    x = _inverted_residual_block(x, roundup(int(64 * width_multiplier) + fix), (3, 3), t=6, strides=2, 
    n=4)
    x = _inverted_residual_block(x, roundup(int(96 * width_multiplier)), (3, 3), t=6, strides=1, n=3)
    x = _inverted_residual_block(x, roundup(int(160 * width_multiplier)), (3, 3), t=6, strides=2, n=3)
    x = _inverted_residual_block(x, roundup(int(320 * width_multiplier)), (3, 3), t=6, strides=1, n=1)
    last_conv_size = max(1280, int(1280 * width_multiplier))
    x = _conv_block(x, last_conv_size, (1, 1), strides=(1, 1), use_bias=False)
    x = GlobalAveragePooling2D()(x)
    x = Reshape((1, 1, last_conv_size))(x)
    x = Dropout(0.3, name='Dropout')(x)
    x = Conv2D(k, (1, 1), padding='same', name='logits', use_bias=True)(x)
    x = Activation('softmax', name='softmax')(x)
    output = Reshape((k,), name='out')(x)
    model = Model(inputs, output)
    plot_model(model, to_file='MobileNetv2.png', show_shapes=True)
   return model
  if __name__ == '__main__':
    model=MobileNetv2((224, 224, 3), 100)
    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)
    print('Input image shape:', x.shape)
    preds = model.predict(x)
    print('Predicted:', decode_predictions(preds))
  </code></pre>
  <p>Error</p>
  <pre><code>File &quot;C:/Users/learn/PycharmProjects/mobilenet-v2.py&quot;, line 120, in &lt;module&gt;
     print('Predicted:', decode_predictions(preds))
  File &quot;C:\Users\learn\miniconda3\envs\tensorflow\lib\site- 
  packages\keras\applications\__init__.py&quot;, line 28, in wrapper
  return base_fun(*args, **kwargs)
  File &quot;C:\Users\learn\miniconda3\envs\tensorflow\lib\site- 
  packages\keras\applications\imagenet_utils.py&quot;, line 14, in 
  decode_predictions*args, **kwargs)
  File &quot;C:\Users\learn\miniconda3\envs\tensorflow\lib\site- 
  packages\keras_applications\imagenet_utils.py&quot;, line 222, in 
  decode_predictions
  'Found array with shape: ' + str(preds.shape))
  ValueError: `decode_predictions` expects a batch of predictions (i.e. a 2D 
  array of shape (samples, 1000)). Found array with shape: (1, 100)
  </code></pre>