python - 检查目标时出现 Keras ValueError

标签 python keras

我正在尝试在 keras 中构建一个模型。我几乎完全按照教程进行操作,但我收到一条错误消息:

ValueError: Error when checking target: expected activation_5 to have shape (None, 1) but got array with shape (16, 13)

我的代码如下:

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

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

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

model.add(Flatten())
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 = 16
epochs = 50
number_training_data = 999
number_validation_data = 100

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(
        'data/train',  # this is the target directory
        target_size=(200, 200),
        batch_size=batch_size,
        class_mode='categorical')

validation_generator = test_datagen.flow_from_directory(
        'data/validation',
        target_size=(200, 200),
        batch_size=batch_size,
        class_mode='categorical')

model.fit_generator(
    train_generator,
    steps_per_epoch=number_training_data // batch_size,
    epochs=epochs,
    validation_data=validation_generator,
    validation_steps=number_validation_data // batch_size)

我的数据集有 13 个类,因此错误消息中的数组形状对应于批量大小和类数。知道为什么我会收到此错误吗?

最佳答案

您的模型配置为执行二元分类,而不是具有 13 个类别的多类别分类。为此,您应该更改:

  • 最后密集的单元数为 13,即类数。
  • softmax 输出处的激活。
  • 分类交叉熵损失 (categorical_crossentropy)。

关于python - 检查目标时出现 Keras ValueError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49836058/

相关文章:

tensorflow - 无法使用tensorflow 2.0.0 beta1保存模型

python:段错误(核心已转储)

Python:是否有更简单的方法来执行此脚本?

tensorflow - 将 Keras model.fit 的 `steps_per_epoch` 与 TensorFlow 的 Dataset API 的 `batch()` 相结合

python - Tensorflow中实验预处理层和普通预处理层的区别

python - 我如何解决keras上的错误 "allocation exceeds 10 of system memory"?

r - 如何实现神经网络模型的可重复性?

python - Keras 的 `model.fit_generator()` 行为不同于 `model.fit()`

python - OpenCV 中保存的 webp 图像比 jpg 大 3 倍

python - 批量大小如何影响神经网络的时间执行?