You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keras预训练VGG16迁移学习所有测试图像被归为同一类原因查询

可能的原因列表
  • 损失函数选择错误:当前任务为5类多分类任务,你使用的binary_crossentropy仅适用于二分类或多标签分类场景,多分类任务应根据标签格式选择对应损失:标签为one-hot编码用categorical_crossentropy,标签为整数格式用sparse_categorical_crossentropy。损失函数不匹配会导致模型梯度更新逻辑错误,无法学习到正确的分类边界。
  • 训练配置不合理:你设置的学习率1e-5过低,且仅训练3个epoch,冻结主干网络后仅有的待训练全连接层参数未得到充分更新,模型尚未收敛。仅训练顶层时建议将学习率调整为1e-4 ~ 1e-3,训练轮次增加到10~20轮观察收敛情况。
  • 输入数据预处理未匹配预训练模型要求:VGG16在ImageNet预训练时要求输入为BGR通道顺序,且需减去对应通道均值[123.68, 116.779, 103.939],如果直接输入自定义归一化的RGB格式数据,预训练主干无法提取有效特征,模型只能输出占比最高的类别作为预测结果。
  • 数据集类别不平衡:如果数据集中某一类样本占比远高于其他类别,模型无需学习其他类特征,只需全部预测为占比最高的类别即可获得较低的损失值,从当前约0.27的准确率(接近5分类随机猜测的0.2准确率)来看,也符合模型未学习到有效分类规则、仅输出多数类的特征。
  • 顶层分类头结构过于简单:你直接在VGG16输出的特征后接Flatten层就接入最终softmax层,中间没有隐藏层、非线性激活和正则化结构,拟合能力不足,无法适配你自有数据集的分类需求。
  • 标签格式不匹配损失函数要求:如果使用categorical_crossentropy损失但未将标签转换为one-hot编码,或者使用sparse_categorical_crossentropy时传入了one-hot格式的标签,都会导致损失计算异常,模型无法正常学习。

内容的提问来源于stack exchange,提问作者Kara Combs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 02:21:00