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

Keras搭建CapsNet图像分类模型训练准确率高验证准确率低问题

问题成因分析
  • 验证集划分逻辑错误:你已提前将全量数据集按8:2划分为训练集和测试集,但代码中model.fit配置了validation_split=0.2,会从原训练集再切20%作为训练时的验证集。如果未提前对全量数据集做全局打乱,这个子验证集的样本分布可能和训练集、测试集存在明显偏移,导致验证准确率异常偏低,你当前看到的29%准确率就是这个子验证集的结果。
  • 严重过拟合:训练准确率达96%、验证准确率不足30%属于典型的过拟合表现。CapsNet本身参数量较大,你当前代码未加入任何正则化手段,也没有做训练数据增强,模型很容易直接记住训练集的特征,无法泛化到未见过的样本。
  • 训练配置不合理:
    1. 早停策略patience=2设置过小,模型仅训练3轮还未充分收敛就被提前终止,没有足够的迭代空间调整参数
    2. 早停监控的是包含重构损失的总val_loss,和分类任务的核心目标val_capsnet_accuracy不完全对齐,可能出现分类准确率还在提升但总损失上升就被提前停止的情况
    3. 若重构损失权重lam_recon设置过大,会导致重构任务主导优化方向,分类任务的优化目标被稀释
    4. 若初始学习率设置过高,会导致参数更新幅度过大,验证集表现快速震荡下降
  • 预处理逻辑不一致:如果训练集和测试集的图像归一化、尺寸调整、通道顺序等预处理逻辑不统一,也会导致跨集表现差距极大。
可行解决方案
  • 修正验证集逻辑:
    1. 先对全量数据集做随机打乱,再按8:2划分训练集和测试集,保证两类数据集的样本分布一致
    2. 训练时要么提前从训练集切分固定的验证子集,要么将model.fit的validation_data参数设置为([x_test, y_test], [y_test, x_test]),取消validation_split配置,确保验证集的分布一致性
  • 增加正则化与数据增强:
    1. 在CapsNet的特征提取层后加入Dropout(0.2~0.5)层,或者给全连接层增加L2正则项,抑制过拟合
    2. 训练阶段加入随机裁剪、随机水平/垂直翻转、亮度/对比度调整等数据增强操作,提升训练样本的特征多样性
  • 调整训练配置:
    1. 将早停的patience调整为5~10,给模型足够的收敛空间,同时可以将早停监控指标改为val_capsnet_accuracy,更贴合分类任务的核心目标
    2. 调整lam_recon权重,常规3分类任务建议设置为0.0005~0.001,避免重构损失占用过多优化权重
    3. 降低初始学习率到1e-4~3e-4,避免参数更新过快跳过最优解
  • 对齐预处理逻辑:确保训练集、验证集、测试集的图像尺寸、归一化范围、通道顺序等所有预处理逻辑完全一致,避免人为引入分布差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:33:01