首页 › S 模型训练 › S8 综合实践 › 01

S8-01 · CIFAR-10 完整项目:数据增强、调参、评估一条龙

毕业阶段约 600 分钟阶段:S8 综合实践

阶段:S8-综合实践 | 预计耗时:3-4 次学习时段(首次含 170MB 下载)| 前置:S7 全部验收通过 代码:model-learn/s8_cifar10.py(本次自己从零写完整脚本,不再给骨架——毕业项目第一块) 目标成绩:验证集准确率 ≥ 70%(CPU 小 CNN 的合理天花板约 70-78%)

学习目标

把 S0-S7 全部技能在彩色图片分类上完整串一遍。CIFAR-10 比 MNIST 难一个档次:3 通道、内容复杂、32×32 分辨率低——你会第一次遇到"准确率到不了 99%"的真实情况,学会与合理目标共存。

核心知识

1. 与 MNIST 的三个不同

  1. 3 通道:输入 (N,3,32,32);网络第一层 Conv2d(3, 32, 3, padding=1)
  2. 必须用 BatchNorm:nn.BatchNorm2d(通道数) 放在 conv 和 ReLU 之间,稳住训练、加速收敛(eval() 的行为差异这次是真实存在的)
  3. 增强是刚需:随机翻转 + 裁剪是 CIFAR 的标配,不做增强基本到不了 70%

2. CPU 预算(本机实测后回填)

  • 50000 张训练,小 CNN(3 个 conv block + 2 个 Linear)约 200k-400k 参数
  • 预计 1-2 分钟/epoch(首跑后把实测值写进这里),20 epoch 约 30 分钟——放后台跑
  • 下载 170MB:官方源不稳时用镜像或手动下载放 data/cifar-10-batches-py/

3. 项目四步(对应四个学习时段)

  1. 脚本骨架:数据 + 模型 + 训练循环 + 保存曲线(跑通 1 epoch)
  2. 加增强 + BatchNorm,全量 20 epoch(后台),记录曲线
  3. 网格小搜索:lr {1e-3, 3e-3} × dropout {0.3, 0.5}(4 组,每组缩短到 8 epoch 探路)
  4. 定稿配置全量重训 + 混淆矩阵看哪两类最容易混(猫狗、猫鸟)

实验任务

全部自己写。可用清单(不提供代码): - [ ] transforms.Compose([RandomCrop(32, padding=4), RandomHorizontalFlip(), ToTensor(), Normalize(...)]) 只给 train - [ ] 模型:conv(3→32)-BN-ReLU-pool ×2 + conv(32→64)-BN-ReLU-pool + Flatten + Linear(6444,128) + Dropout + Linear(128,10) - [ ] 每 epoch 记录 train/val 双线,最后画图存档(S4-01 的模板直接复用) - [ ] torch.save(state_dict) 保存最佳模型(S3-03 的技能) - [ ] 手算混淆矩阵(S6-01 的技能)

验收标准

衔接下一阶段

第一个完整项目 → S8-02 表格数据 LightGBM:换一个赛道——不训练神经网络的那条高价值路线。

小测验(2 题)

答完立即判分,错题给解析;得分存本地。实验与实操题不上网测:回对话找老师验收。