ValueError: Error when checking input: expected conv2d_13_input to have shape (3, 150, 150) but got array...












0












$begingroup$


I am trying to train the model, I keep ending up with this ValueError:




ValueError: Error when checking input: expected conv2d_13_input to have shape (3, 150, 150) but got array with shape (150, 150, 3)




How can I fix this? Should I use numpy.resize or cv2.resize to change the dimensions to (3,150,150). If so, how would I resize it in the generator?



Here is my code:



train_datagen = ImageDataGenerator(
rescale=1./255,
shear_range=0.2,
zoom_range=0.2)

test_datagen = ImageDataGenerator(rescale=1./255)

from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense

model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=(3, 150, 150),padding='same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2),padding='same'))

model.add(Conv2D(32, (3, 3),padding='same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2),padding='same'))

model.add(Conv2D(64, (3, 3),padding='same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2),padding='same'))

model.add(Flatten()) # this converts our 3D feature maps to 1D feature vectors
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))

model.compile(loss='binary_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])

batch_size = 64

# this is a generator that will read pictures found in
# subfolers of 'data/train', and indefinitely generate
# batches of augmented image data
train_generator = train_datagen.flow_from_directory(
'C:\Users\Zahid\Desktop\Dataset\train', # this is the target directory
target_size=(150, 150), # all images will be resized to 150x150
batch_size=batch_size,
color_mode='rgb',
class_mode='binary') # since we use binary_crossentropy loss, we need binary labels

# this is a similar generator, for validation data
validation_generator = test_datagen.flow_from_directory(
'C:\Users\Zahid\Desktop\Dataset\val',
target_size=(150, 150),
batch_size=batch_size,
color_mode='rgb',
class_mode='binary')

model.fit_generator(
train_generator,
steps_per_epoch=2000 // batch_size,
epochs=50,
validation_data=validation_generator,
validation_steps=800 // batch_size)
model.save_weights('first_try.h5')









share|improve this question









New contributor




Zahid Ahmed is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$

















    0












    $begingroup$


    I am trying to train the model, I keep ending up with this ValueError:




    ValueError: Error when checking input: expected conv2d_13_input to have shape (3, 150, 150) but got array with shape (150, 150, 3)




    How can I fix this? Should I use numpy.resize or cv2.resize to change the dimensions to (3,150,150). If so, how would I resize it in the generator?



    Here is my code:



    train_datagen = ImageDataGenerator(
    rescale=1./255,
    shear_range=0.2,
    zoom_range=0.2)

    test_datagen = ImageDataGenerator(rescale=1./255)

    from keras.models import Sequential
    from keras.layers import Conv2D, MaxPooling2D
    from keras.layers import Activation, Dropout, Flatten, Dense

    model = Sequential()
    model.add(Conv2D(32, (3, 3), input_shape=(3, 150, 150),padding='same'))
    model.add(Activation('relu'))
    model.add(MaxPooling2D(pool_size=(2, 2),padding='same'))

    model.add(Conv2D(32, (3, 3),padding='same'))
    model.add(Activation('relu'))
    model.add(MaxPooling2D(pool_size=(2, 2),padding='same'))

    model.add(Conv2D(64, (3, 3),padding='same'))
    model.add(Activation('relu'))
    model.add(MaxPooling2D(pool_size=(2, 2),padding='same'))

    model.add(Flatten()) # this converts our 3D feature maps to 1D feature vectors
    model.add(Dense(64))
    model.add(Activation('relu'))
    model.add(Dropout(0.5))
    model.add(Dense(1))
    model.add(Activation('sigmoid'))

    model.compile(loss='binary_crossentropy',
    optimizer='rmsprop',
    metrics=['accuracy'])

    batch_size = 64

    # this is a generator that will read pictures found in
    # subfolers of 'data/train', and indefinitely generate
    # batches of augmented image data
    train_generator = train_datagen.flow_from_directory(
    'C:\Users\Zahid\Desktop\Dataset\train', # this is the target directory
    target_size=(150, 150), # all images will be resized to 150x150
    batch_size=batch_size,
    color_mode='rgb',
    class_mode='binary') # since we use binary_crossentropy loss, we need binary labels

    # this is a similar generator, for validation data
    validation_generator = test_datagen.flow_from_directory(
    'C:\Users\Zahid\Desktop\Dataset\val',
    target_size=(150, 150),
    batch_size=batch_size,
    color_mode='rgb',
    class_mode='binary')

    model.fit_generator(
    train_generator,
    steps_per_epoch=2000 // batch_size,
    epochs=50,
    validation_data=validation_generator,
    validation_steps=800 // batch_size)
    model.save_weights('first_try.h5')









    share|improve this question









    New contributor




    Zahid Ahmed is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.







    $endgroup$















      0












      0








      0





      $begingroup$


      I am trying to train the model, I keep ending up with this ValueError:




      ValueError: Error when checking input: expected conv2d_13_input to have shape (3, 150, 150) but got array with shape (150, 150, 3)




      How can I fix this? Should I use numpy.resize or cv2.resize to change the dimensions to (3,150,150). If so, how would I resize it in the generator?



      Here is my code:



      train_datagen = ImageDataGenerator(
      rescale=1./255,
      shear_range=0.2,
      zoom_range=0.2)

      test_datagen = ImageDataGenerator(rescale=1./255)

      from keras.models import Sequential
      from keras.layers import Conv2D, MaxPooling2D
      from keras.layers import Activation, Dropout, Flatten, Dense

      model = Sequential()
      model.add(Conv2D(32, (3, 3), input_shape=(3, 150, 150),padding='same'))
      model.add(Activation('relu'))
      model.add(MaxPooling2D(pool_size=(2, 2),padding='same'))

      model.add(Conv2D(32, (3, 3),padding='same'))
      model.add(Activation('relu'))
      model.add(MaxPooling2D(pool_size=(2, 2),padding='same'))

      model.add(Conv2D(64, (3, 3),padding='same'))
      model.add(Activation('relu'))
      model.add(MaxPooling2D(pool_size=(2, 2),padding='same'))

      model.add(Flatten()) # this converts our 3D feature maps to 1D feature vectors
      model.add(Dense(64))
      model.add(Activation('relu'))
      model.add(Dropout(0.5))
      model.add(Dense(1))
      model.add(Activation('sigmoid'))

      model.compile(loss='binary_crossentropy',
      optimizer='rmsprop',
      metrics=['accuracy'])

      batch_size = 64

      # this is a generator that will read pictures found in
      # subfolers of 'data/train', and indefinitely generate
      # batches of augmented image data
      train_generator = train_datagen.flow_from_directory(
      'C:\Users\Zahid\Desktop\Dataset\train', # this is the target directory
      target_size=(150, 150), # all images will be resized to 150x150
      batch_size=batch_size,
      color_mode='rgb',
      class_mode='binary') # since we use binary_crossentropy loss, we need binary labels

      # this is a similar generator, for validation data
      validation_generator = test_datagen.flow_from_directory(
      'C:\Users\Zahid\Desktop\Dataset\val',
      target_size=(150, 150),
      batch_size=batch_size,
      color_mode='rgb',
      class_mode='binary')

      model.fit_generator(
      train_generator,
      steps_per_epoch=2000 // batch_size,
      epochs=50,
      validation_data=validation_generator,
      validation_steps=800 // batch_size)
      model.save_weights('first_try.h5')









      share|improve this question









      New contributor




      Zahid Ahmed is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.







      $endgroup$




      I am trying to train the model, I keep ending up with this ValueError:




      ValueError: Error when checking input: expected conv2d_13_input to have shape (3, 150, 150) but got array with shape (150, 150, 3)




      How can I fix this? Should I use numpy.resize or cv2.resize to change the dimensions to (3,150,150). If so, how would I resize it in the generator?



      Here is my code:



      train_datagen = ImageDataGenerator(
      rescale=1./255,
      shear_range=0.2,
      zoom_range=0.2)

      test_datagen = ImageDataGenerator(rescale=1./255)

      from keras.models import Sequential
      from keras.layers import Conv2D, MaxPooling2D
      from keras.layers import Activation, Dropout, Flatten, Dense

      model = Sequential()
      model.add(Conv2D(32, (3, 3), input_shape=(3, 150, 150),padding='same'))
      model.add(Activation('relu'))
      model.add(MaxPooling2D(pool_size=(2, 2),padding='same'))

      model.add(Conv2D(32, (3, 3),padding='same'))
      model.add(Activation('relu'))
      model.add(MaxPooling2D(pool_size=(2, 2),padding='same'))

      model.add(Conv2D(64, (3, 3),padding='same'))
      model.add(Activation('relu'))
      model.add(MaxPooling2D(pool_size=(2, 2),padding='same'))

      model.add(Flatten()) # this converts our 3D feature maps to 1D feature vectors
      model.add(Dense(64))
      model.add(Activation('relu'))
      model.add(Dropout(0.5))
      model.add(Dense(1))
      model.add(Activation('sigmoid'))

      model.compile(loss='binary_crossentropy',
      optimizer='rmsprop',
      metrics=['accuracy'])

      batch_size = 64

      # this is a generator that will read pictures found in
      # subfolers of 'data/train', and indefinitely generate
      # batches of augmented image data
      train_generator = train_datagen.flow_from_directory(
      'C:\Users\Zahid\Desktop\Dataset\train', # this is the target directory
      target_size=(150, 150), # all images will be resized to 150x150
      batch_size=batch_size,
      color_mode='rgb',
      class_mode='binary') # since we use binary_crossentropy loss, we need binary labels

      # this is a similar generator, for validation data
      validation_generator = test_datagen.flow_from_directory(
      'C:\Users\Zahid\Desktop\Dataset\val',
      target_size=(150, 150),
      batch_size=batch_size,
      color_mode='rgb',
      class_mode='binary')

      model.fit_generator(
      train_generator,
      steps_per_epoch=2000 // batch_size,
      epochs=50,
      validation_data=validation_generator,
      validation_steps=800 // batch_size)
      model.save_weights('first_try.h5')






      neural-network keras dataset neural






      share|improve this question









      New contributor




      Zahid Ahmed is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      share|improve this question









      New contributor




      Zahid Ahmed is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      share|improve this question




      share|improve this question








      edited 13 hours ago









      Stephen Rauch

      1,52551330




      1,52551330






      New contributor




      Zahid Ahmed is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 18 hours ago









      Zahid AhmedZahid Ahmed

      11




      11




      New contributor




      Zahid Ahmed is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      Zahid Ahmed is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      Zahid Ahmed is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






















          1 Answer
          1






          active

          oldest

          votes


















          1












          $begingroup$

          Change this:



          model.add(Conv2D(32, (3, 3), input_shape=(3, 150, 150),padding='same'))


          to this:



          model.add(Conv2D(32, (3, 3), input_shape=(150, 150, 3),padding='same'))


          And read the doc: https://keras.io/layers/convolutional/#conv2d



          In particular the section about data_format:




          data_format: A string, one of "channels_last" or "channels_first". The ordering of the dimensions in the inputs. "channels_last" corresponds to inputs with shape (batch, height, width, channels) while "channels_first" corresponds to inputs with shape (batch, channels, height, width). It defaults to the image_data_format value found in your Keras config file at ~/.keras/keras.json. If you never set it, then it will be "channels_last".







          share|improve this answer









          $endgroup$













          • $begingroup$
            Thank you so much :)
            $endgroup$
            – Zahid Ahmed
            18 hours ago












          Your Answer





          StackExchange.ifUsing("editor", function () {
          return StackExchange.using("mathjaxEditing", function () {
          StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
          StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
          });
          });
          }, "mathjax-editing");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "557"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });






          Zahid Ahmed is a new contributor. Be nice, and check out our Code of Conduct.










          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdatascience.stackexchange.com%2fquestions%2f48731%2fvalueerror-error-when-checking-input-expected-conv2d-13-input-to-have-shape-3%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          1












          $begingroup$

          Change this:



          model.add(Conv2D(32, (3, 3), input_shape=(3, 150, 150),padding='same'))


          to this:



          model.add(Conv2D(32, (3, 3), input_shape=(150, 150, 3),padding='same'))


          And read the doc: https://keras.io/layers/convolutional/#conv2d



          In particular the section about data_format:




          data_format: A string, one of "channels_last" or "channels_first". The ordering of the dimensions in the inputs. "channels_last" corresponds to inputs with shape (batch, height, width, channels) while "channels_first" corresponds to inputs with shape (batch, channels, height, width). It defaults to the image_data_format value found in your Keras config file at ~/.keras/keras.json. If you never set it, then it will be "channels_last".







          share|improve this answer









          $endgroup$













          • $begingroup$
            Thank you so much :)
            $endgroup$
            – Zahid Ahmed
            18 hours ago
















          1












          $begingroup$

          Change this:



          model.add(Conv2D(32, (3, 3), input_shape=(3, 150, 150),padding='same'))


          to this:



          model.add(Conv2D(32, (3, 3), input_shape=(150, 150, 3),padding='same'))


          And read the doc: https://keras.io/layers/convolutional/#conv2d



          In particular the section about data_format:




          data_format: A string, one of "channels_last" or "channels_first". The ordering of the dimensions in the inputs. "channels_last" corresponds to inputs with shape (batch, height, width, channels) while "channels_first" corresponds to inputs with shape (batch, channels, height, width). It defaults to the image_data_format value found in your Keras config file at ~/.keras/keras.json. If you never set it, then it will be "channels_last".







          share|improve this answer









          $endgroup$













          • $begingroup$
            Thank you so much :)
            $endgroup$
            – Zahid Ahmed
            18 hours ago














          1












          1








          1





          $begingroup$

          Change this:



          model.add(Conv2D(32, (3, 3), input_shape=(3, 150, 150),padding='same'))


          to this:



          model.add(Conv2D(32, (3, 3), input_shape=(150, 150, 3),padding='same'))


          And read the doc: https://keras.io/layers/convolutional/#conv2d



          In particular the section about data_format:




          data_format: A string, one of "channels_last" or "channels_first". The ordering of the dimensions in the inputs. "channels_last" corresponds to inputs with shape (batch, height, width, channels) while "channels_first" corresponds to inputs with shape (batch, channels, height, width). It defaults to the image_data_format value found in your Keras config file at ~/.keras/keras.json. If you never set it, then it will be "channels_last".







          share|improve this answer









          $endgroup$



          Change this:



          model.add(Conv2D(32, (3, 3), input_shape=(3, 150, 150),padding='same'))


          to this:



          model.add(Conv2D(32, (3, 3), input_shape=(150, 150, 3),padding='same'))


          And read the doc: https://keras.io/layers/convolutional/#conv2d



          In particular the section about data_format:




          data_format: A string, one of "channels_last" or "channels_first". The ordering of the dimensions in the inputs. "channels_last" corresponds to inputs with shape (batch, height, width, channels) while "channels_first" corresponds to inputs with shape (batch, channels, height, width). It defaults to the image_data_format value found in your Keras config file at ~/.keras/keras.json. If you never set it, then it will be "channels_last".








          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered 18 hours ago









          qmeeusqmeeus

          19118




          19118












          • $begingroup$
            Thank you so much :)
            $endgroup$
            – Zahid Ahmed
            18 hours ago


















          • $begingroup$
            Thank you so much :)
            $endgroup$
            – Zahid Ahmed
            18 hours ago
















          $begingroup$
          Thank you so much :)
          $endgroup$
          – Zahid Ahmed
          18 hours ago




          $begingroup$
          Thank you so much :)
          $endgroup$
          – Zahid Ahmed
          18 hours ago










          Zahid Ahmed is a new contributor. Be nice, and check out our Code of Conduct.










          draft saved

          draft discarded


















          Zahid Ahmed is a new contributor. Be nice, and check out our Code of Conduct.













          Zahid Ahmed is a new contributor. Be nice, and check out our Code of Conduct.












          Zahid Ahmed is a new contributor. Be nice, and check out our Code of Conduct.
















          Thanks for contributing an answer to Data Science Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          Use MathJax to format equations. MathJax reference.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdatascience.stackexchange.com%2fquestions%2f48731%2fvalueerror-error-when-checking-input-expected-conv2d-13-input-to-have-shape-3%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          How to label and detect the document text images

          Vallis Paradisi

          Tabula Rosettana