【问题标题】:'Error when checking target' message when trying to train with VGG16 model尝试使用 VGG16 模型进行训练时出现“检查目标时出错”消息
【发布时间】:2019-08-14 05:02:03
【问题描述】:

我是迁移学习的初学者, 在这个项目中,我打算使用 VGG16 并添加更多层来在 2 个类之间进行分类:class0 和 class1

我有名为“train”的数据框,其中“id”列包含文件名,而标签包含该图像的类

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

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

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

但是一直报错:

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

我的模型总结:

Here 是我用于训练的 jupyter 笔记本。

我的编码有什么问题?

【问题讨论】:

    标签: python keras transfer-learning


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,您的笔记解决了我的问题。非常感谢
    猜你喜欢
    • 2022-12-04
    • 1970-01-01
    • 2022-01-05
    • 2022-06-10
    • 2018-08-11
    • 2018-11-23
    • 2018-07-25
    • 2021-05-18
    • 1970-01-01
    相关资源
    最近更新 更多