簡體   English   中英

檢查輸入時出錯:預期 conv2d_1_input 的形狀為 (50, 50, 1) 但得到的數組的形狀為 (50, 50, 3)

[英]Error when checking input: expected conv2d_1_input to have shape (50, 50, 1) but got array with shape (50, 50, 3)

enter code here



      classifier = Sequential()


      classifier.add(Convolution2D(32, kernel_size=3, input_shape = (50, 50 , 1), activation =             
      'relu'))


      classifier.add(MaxPooling2D(pool_size = (2, 2)))


      classifier.add(Convolution2D(32, kernel_size=3, activation = 'relu'))
      classifier.add(MaxPooling2D(pool_size = (2, 2)))

      classifier.add(Dropout(0.35))
      classifier.add(Flatten())


      classifier.add(Dense(output_dim = 128, activation = 'relu'))
      classifier.add(Dropout(0.04))
      classifier.add(Dense(1, activation = 'sigmoid'))


      classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])



       from keras.preprocessing.image import ImageDataGenerator

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

       validation_datagen = ImageDataGenerator(rescale = 1./255)

        training_set = train_datagen.flow_from_directory('/...',
                                             target_size = (50, 50),
                                             batch_size = 32,
                                             class_mode = 'binary')


         validation_set = validation_datagen.flow_from_directory('/…..',
                                        target_size = (50, 50),
                                        batch_size = 32,
                                        class_mode = 'binary')


           history=classifier.fit_generator(training_set,
                     samples_per_epoch = 5187,
                     nb_epoch = 25,
                     validation_data = validation_set,
                     nb_val_samples = 1287)

這是我做的簡單的cnn架構。 我使用的圖像是灰度的。

如果我將通道值指定為粗體分類器中指定的 1.add(Convolution2D(32, kernel_size=3, input_shape = (50, 50, 1 ), activation = 'relu'))

我收到錯誤

檢查輸入時出錯:預期 conv2d_1_input 的形狀為 (50, 50, 1) 但得到的數組的形狀為 (50, 50, 3)

但是,如果我使用過濾器大小為 3,我不會收到任何錯誤,但這可能是使用 3 通道處理灰度圖像的邏輯錯誤......請澄清這一點

flow_from_directory采用color_mode參數,該參數指定加載的圖像具有的通道數。 如果要使用灰度圖像,則需要指定它(默認為'rgb' ):

train_datagen.flow_from_directory('/...',
                                  color_mode='grayscale', #<<<<<<<<<<<<<<<<<<<<<
                                  target_size = (50, 50),
                                  batch_size = 32,
                                  class_mode = 'binary')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM