Day44 简单 CNN 实战

1. 数据准备与增强
2. 模型设计路线

卷积块Conv2d → BatchNorm → ReLU → MaxPool 提取多尺度特征并逐步减小空间维度

分类头:将卷积输出展平成向量,接 1~2 层全连接 + Dropout,输出 10 维 logits。

正则化:BatchNorm 稳定分布、Dropout 降低 co-adaptation。

Batch Normalization 的作用
  • 以 batch 为单位对每个通道做标准化,缓解"内部协变量偏移";
  • 学习 gammabeta 进行再缩放,允许网络恢复到任意分布;
  • 由于分布稳定,可使用更大学习率,加速收敛并起到轻微正则化效果
特征图尺寸推导

假设输入尺寸为 (32\times32):

第 1 个卷积块:保持尺寸,池化后得到 32×16×16;

第 2 个卷积块:池化后得到 64×8×8;

第 3 个卷积块:池化后得到 128×4×4,展平即 2048 维向量。

这些中间输出就是"特征图",可借助 Grad-CAM 等方法做可视化解释。

class CNN(nn.Module):

3. 损失函数、优化器与学习率调度
  • 损失函数CrossEntropyLoss 直接接收 logits 和标签。
  • 优化器:Adam 适合快速验证,配合适度权重衰减稳定训练。
  • 调度器ReduceLROnPlateau 在验证指标停滞时自动降低学习率,比固定周期衰减更智能。
4. 训练与可视化流程

训练函数需要做几件事:

  1. 记录每个 batch 的损失,以观察局部波动情况;
  2. 每个 epoch 统计训练/测试损失与准确率,供调度器和图表使用;
  3. 训练结束后绘制迭代级别与 epoch 级别的曲线,帮助定位过拟合或欠拟合。
5. 启动训练
  • 增加卷积层深度或使用更大的特征维度;
  • 加入 CosineAnnealingLRMixup 等更强的数据/调度策略;
  • 使用 AutoAugmentCutMix 等进阶增强方式

@浙大疏锦行

相关推荐
渣渣苏2 分钟前
Langchain实战快速入门
人工智能·python·langchain
lili-felicity11 分钟前
CANN模型量化详解:从FP32到INT8的精度与性能平衡
人工智能·python
数据知道14 分钟前
PostgreSQL实战:详解如何用Python优雅地从PG中存取处理JSON
python·postgresql·json
ZH154558913127 分钟前
Flutter for OpenHarmony Python学习助手实战:面向对象编程实战的实现
python·学习·flutter
玄同76527 分钟前
SQLite + LLM:大模型应用落地的轻量级数据存储方案
jvm·数据库·人工智能·python·语言模型·sqlite·知识图谱
User_芊芊君子32 分钟前
CANN010:PyASC Python编程接口—简化AI算子开发的Python框架
开发语言·人工智能·python
白日做梦Q43 分钟前
Anchor-free检测器全解析:CenterNet vs FCOS
python·深度学习·神经网络·目标检测·机器学习
喵手1 小时前
Python爬虫实战:公共自行车站点智能采集系统 - 从零构建生产级爬虫的完整实战(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集公共自行车站点·公共自行车站点智能采集系统·采集公共自行车站点导出csv
喵手1 小时前
Python爬虫实战:地图 POI + 行政区反查实战 - 商圈热力数据准备完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·地区poi·行政区反查·商圈热力数据采集
熊猫_豆豆1 小时前
YOLOP车道检测
人工智能·python·算法