'Error when checking target' 尝试使用 VGG16 模型训练时的消息

'Error when checking target' message when trying to train with VGG16 model

我是迁移学习的初学者, 在这个项目中,我旨在使用 VGG16 并添加更多层以在 2 classes 之间进行 classification:class0 和 class1

我有一个名为 'train' 的数据框,其中 'id' 列包含文件名,而标签包含该图像的 class

图像并通过 ImageDataGenerator() 和 flow.from_dataframe

准备

总结一下,我的最后一层是Dense(2,activation='softmax')

VGG16 的输入图像的形状为 (32,32,3)

但是一直报错:

ValueError:检查目标时出错:预期 dense_55 有 2 个维度,但得到的数组形状为 (1, 32, 32, 3)

我的模型总结:

Here 是我用于训练的 jupyter notebook。

我这里的编码有什么问题?

该错误意味着您的网络输出具有两个维度(如摘要所示,输出形状为 (None, 2)),但您的标签具有形状 (1, 32, 32, 3)

在您的验证数据生成中,您设置了 class_mode="input"。这意味着您的标签也将是与您的输入形状相同的图像(请参阅文档 https://keras.io/preprocessing/image/#flow_from_dataframe),而不是二维分类标签。这就是问题。使用 class_mode="categorical" 作为训练数据。