title: Error when checking target: expected dense_3 to have shape (3,) but got array with shape (1,)
body: <p>I am working on training a VGG16-like model in Keras, on a 3 classes subset from Places205, and encountered the following error: </p>
  
  <pre><code>ValueError: Error when checking target: expected dense_3 to have shape (3,) but got array with shape (1,)
  </code></pre>
  
  <p>I read multiple similar issues but none helped me so far. The error is on the last layer, where I've put 3 because this is the number of classes I'm trying right now.</p>
  
  <p>The code is the following:</p>
  
  <pre><code>import keras from keras.datasets
  import cifar10 from keras.preprocessing.image 
  import ImageDataGenerator from keras.models 
  import Sequential 
  from keras.layers import Dense, Dropout, Activation, Flatten from keras.layers import Conv2D, MaxPooling2D 
  from keras import backend as K import os
  
  
  # Constants used  
  img_width, img_height = 224, 224  
  train_data_dir='places\\train'  
  validation_data_dir='places\\validation'  
  save_filename = 'vgg_trained_model.h5'  
  training_samples = 15  
  validation_samples = 5  
  batch_size = 5  
  epochs = 5
  
  
  if K.image_data_format() == 'channels_first':
      input_shape = (3, img_width, img_height) else:
      input_shape = (img_width, img_height, 3)
  
  model = Sequential([
      # Block 1
      Conv2D(64, (3, 3), activation='relu', input_shape=input_shape, padding='same'),
      Conv2D(64, (3, 3), activation='relu', padding='same'),
      MaxPooling2D(pool_size=(2, 2), strides=(2, 2)),
      # Block 2
      Conv2D(128, (3, 3), activation='relu', padding='same'),
      Conv2D(128, (3, 3), activation='relu', padding='same'),
      MaxPooling2D(pool_size=(2, 2), strides=(2, 2)),
      # Block 3
      Conv2D(256, (3, 3), activation='relu', padding='same'),
      Conv2D(256, (3, 3), activation='relu', padding='same'),
      Conv2D(256, (3, 3), activation='relu', padding='same'),
      MaxPooling2D(pool_size=(2, 2), strides=(2, 2)),
      # Block 4
      Conv2D(512, (3, 3), activation='relu', padding='same'),
      Conv2D(512, (3, 3), activation='relu', padding='same'),
      Conv2D(512, (3, 3), activation='relu', padding='same'),
      MaxPooling2D(pool_size=(2, 2), strides=(2, 2)),
      # Block 5
      Conv2D(512, (3, 3), activation='relu', padding='same',),
      Conv2D(512, (3, 3), activation='relu', padding='same',),
      Conv2D(512, (3, 3), activation='relu', padding='same',),
      MaxPooling2D(pool_size=(2, 2), strides=(2, 2)),
      # Top
      Flatten(),
      Dense(4096, activation='relu'),
      Dense(4096, activation='relu'),
      Dense(3, activation='softmax') ])
  
  model.summary()
  
  model.compile(loss='binary_crossentropy',
                optimizer='rmsprop',
                metrics=['accuracy'])
  
  # no augmentation config train_datagen = ImageDataGenerator() validation_datagen = ImageDataGenerator()
       train_generator = train_datagen.flow_from_directory(
      train_data_dir,
      target_size=(img_width, img_height),
      batch_size=batch_size,
      class_mode='binary')
  
  validation_generator = validation_datagen.flow_from_directory(
      validation_data_dir,
      target_size=(img_width, img_height),
      batch_size=batch_size,
      class_mode='binary')
  
  model.fit_generator(
      train_generator,
      steps_per_epoch=training_samples // batch_size,
      epochs=epochs,
      validation_data=validation_generator,
      validation_steps=validation_samples // batch_size)
  
  model.save_weights(save_filename)
  </code></pre>