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

Keras数据增强效果不佳:《Deep Learning with Keras》示例复现遇阻

关于复现《Deep Learning with Keras》CIFAR-10数据增强准确率问题的经验分享

我之前跟进这本书第3章的这个示例时,也遇到过完全一样的困扰!折腾了好几天才摸清楚几个关键问题点,分享给你参考:

1. 数据增强的细节遗漏

书中的代码片段大概率省略了核心参数,你可以自查这几点:

  • 确认ImageDataGenerator的归一化逻辑和书中一致:比如是否用了rescale=1./255,或是有没有在预处理阶段单独做了0-1归一化?数据尺度不匹配的话,模型很容易出现训练混乱的情况。
  • 数据增强的参数是否和书中对齐?比如书中可能用了rotation_range=15、width_shift_range=0.1这类温和的增强幅度,要是你不小心调得太激进(比如把旋转角度设成45),反而会让模型学习到无效噪声,直接导致训练中途准确率下滑。

2. 训练超参数的偏差

  • batch_size与epochs设置:书中可能用了特定数值(比如batch_size=32、epochs=100),如果你的batch_size过大或者epochs不足,模型要么欠拟合要么过拟合。中途准确率下降很大概率是过拟合的信号——你有没有在模型里加**Dropout层**?书中的完整结构可能包含Dropout,但代码片段没写全,漏掉的话模型后期很容易过拟合,准确率反而下跌。
  • 优化器与学习率:默认Adam的学习率0.001对CIFAR-10来说可能偏高,训练后期容易震荡导致准确率波动。可以试试把学习率调低到0.0005,或者加入ReduceLROnPlateau回调做学习率衰减,让模型在训练后期能更稳定收敛。

3. 模型结构的完整性问题

书中只给片段代码,很可能漏掉了关键层:

  • 有没有在卷积层后添加**BatchNormalization层**?这个层对CIFAR-10的模型性能提升非常明显,很多时候书中只是提了一句但没写进代码片段里。
  • 全连接层的设置是否正确?比如最后一层是不是10个神经元对应CIFAR-10的10分类?激活函数是不是用了softmax?这些细节出错的话,准确率肯定达不到预期。

4. 训练回调的缺失

你有没有用ModelCheckpoint保存训练过程中的最佳模型权重,或是用EarlyStopping提前终止过拟合的训练?有时候训练中途准确率下降,但最佳权重其实出现在更早的epoch,如果直接取最后一轮的权重,测试准确率自然会差很多。

我当时就是因为漏加了BatchNormalization,还把width_shift_range设得太大,导致训练到30多轮时准确率开始下滑,最终测试准确率只有0.6左右。后来调整这些参数,补上Dropout和学习率衰减,最终测试准确率稳定在0.77-0.79之间,和书中的结果吻合。

另外建议你把训练过程的准确率、损失曲线画出来,能更直观判断问题:如果训练准确率很高但测试准确率低,就是过拟合;如果两者都偏低,就是欠拟合;要是曲线波动剧烈,大概率是学习率的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:35:10