【问题标题】:ValueError: Error when checking target: expected dense_20 to have shape (1,) but got array with shape (2,)ValueError:检查目标时出错:预期dense_20的形状为(1,),但数组的形状为(2,)
【发布时间】:2020-08-09 14:36:45
【问题描述】:

所以我正在尝试使用 keras CNN 执行二进制分类。尝试将我的模型安装到生成器时出现以下错误。这是生成器:

image_gen = ImageDataGenerator(
    rotation_range=30, 
    width_shift_range=0.1,
    height_shift_range=0.1, 
    horizontal_flip=True,
    rescale=1/255)

training_generator = image_gen.flow_from_directory('dataset/DATASET/TRAIN',target_size=(300,300))

这是我的模型:

model = Sequential()

model.add(Conv2D(filters=32,kernel_size=(4,4),input_shape=(300,300,3),activation='relu'))
model.add(Conv2D(filters=32,kernel_size=(4,4),input_shape=(300,300),activation='relu'))
model.add(MaxPool2D(pool_size=(2,2)))

model.add(Conv2D(filters=64,kernel_size=(3,3),input_shape=(300,300,3),activation='relu'))
model.add(Conv2D(filters=64,kernel_size=(3,3),input_shape=(300,300,3),activation='relu'))
model.add(MaxPool2D(pool_size=(2,2)))

model.add(Flatten())

model.add(Dense(units=128,activation='relu'))
model.add(Dense(units=64,activation='relu'))
model.add(Dropout(rate=0.35))
model.add(Dense(units=32,activation='relu'))
model.add(Dense(units=1,activation='sigmoid'))

model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])
model.fit_generator(training_generator,epochs=5)

这是错误: ValueError: 检查目标时出错:预期dense_24 的形状为(1,),但得到的数组的形状为(2,)

我附上了模型摘要的截图

提前致谢!

【问题讨论】:

    标签: python keras deep-learning conv-neural-network image-recognition


    【解决方案1】:

    此错误特定于二进制分类,其中使用了 ImageDataGenerator 而未将 class_mode 指定为“二进制”。

    在下面一行你需要添加class_mode 如上所述。

    training_generator = image_gen.flow_from_directory('dataset/DATASET/TRAIN',target_size=(300,300),class_mode='binary')
    

    必须为二进制分类指定class_mode。如果您使用的是 keras,那么它会抛出一个错误,指出 expected dense_2 to have shape (1,) but got array with shape (2,)

    如果您使用的是 tf.keras,那么它不会抛出错误,但分类准确率将显示为 50%。

    我以cats vs dogs 二进制分类示例来演示该问题。完整代码是here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-30
      • 2017-10-22
      • 2019-03-05
      • 2019-05-10
      • 2020-02-21
      • 2018-12-29
      • 2020-08-23
      相关资源
      最近更新 更多