Я пытаюсь построить классификатор изображений, используя Keras 2.2.0
и tensorflow 1.9.0
Я получаю ошибку такого рода:
str(data_shape))
ValueError: Error when checking input: expected conv2d_1_input to have shape (1, 224, 224) but got array with shape (224, 224, 3)
Вот код:
train_datagen=ImageDataGenerator(rotation_range=40,
width_shift_range=0.2,
height_shift_range=0.2,
rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True,
fill_mode='nearest')
validation_datagen=ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory('/media/centura/DANISH/mobile backup/moles/train/',class_mode='binary',target_size=(224, 224),batch_size=batch_size)
validation_generator = validation_datagen.flow_from_directory('/media/centura/DANISH/mobile backup/moles/test/',class_mode='binary',target_size=(224, 224),batch_size=batch_size)
#Data Dimensions
img_rows,img_cols=224,224
input_shape1=(1,img_rows,img_cols)
#initialising the model
model=Sequential()
#layer 1
model.add(Conv2D(filters=32, kernel_size=(3,3), strides=(1, 1), padding='same',input_shape=input_shape1,data_format="channels_last"))
model.add(BatchNormalization())
model.add(Activation('relu'))
#model.add(AveragePooling2D(pool_size=(2,2)))
model.add(Dropout(0.25))
#fully connected first layer
model.add(Flatten())
model.add(Dense(500,use_bias=False))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Dropout(0.25))
#Fully connected final layer
model.add(Dense(1))
model.add(Activation('sigmoid'))
tensorboard=TensorBoard(log_dir='logs/{}'.format(name))
model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])
#model.summary()
model.fit_generator(train_generator,epochs=50,validation_data=validation_generator,callbacks=[tensorboard])
Я считаю, что ошибка исходит от train_generator
.Я искал в переполнении стека для подобных проблем.Я нашел определенные решения, но это не сработало для меня.Как я могу изменить размеры изображения, если оно вызывается из .flow_from_directory
?