首页 > 解决方案 > 如何修复 InvalidArgumentError:输入和过滤器必须具有相同的深度:3 vs 32?

问题描述

我的图像数据量太小(大约 100 个),所以我使用 ImagDataGenerator 进行扩充。我不知道为什么错误是图像分类(4 类),我使用卷积。我认为错误的原因是 input_shape。输入与过滤器-> 3:42 是什么意思?如何修复我的代码?

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

...

model.compile(loss='categorical_crossentropy',
              optimizer='adam',
              metrics=['accuracy'])

batch_size = 16

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

test_datagen = ImageDataGenerator(rescale=1./255)

train_generator = train_datagen.flow_from_directory(
        'picture/train/makkne',  
        target_size=(150, 150),  
        batch_size=batch_size,
        class_mode='categorical')  

test_generator = test_datagen.flow_from_directory(
        'picture/test/makkne',
        target_size=(150, 150),
        batch_size=batch_size,
        class_mode='categorical')

model.fit_generator(
        train_generator,
        steps_per_epoch=15,
        validation_data=test_generator,
        epochs=50)
model.save_weights('first_try.h5')  

标签: keras-layer

解决方案


推荐阅读