Day44 简单 CNN 实战

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

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

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

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

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

假设输入尺寸为 (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. 启动训练
  • 增加卷积层深度或使用更大的特征维度;
  • 加入 CosineAnnealingLR、Mixup 等更强的数据/调度策略;
  • 使用 AutoAugment、CutMix 等进阶增强方式

@浙大疏锦行

相关推荐
第九序言T4 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
Java后端的Ai之路4 小时前
CAS并发控制-从CPU指令到企业级乐观锁
vue.js·人工智能·python·cas·乐观锁
qq_426003964 小时前
UI自动化高频次登录login限流解决方案
python·ui·自动化
Sakura_j_h_4 小时前
EasyEDA PCB 快速设计Skills
c++·python·github
quantdash_cc5 小时前
如何验证历史行情的交易日期是否完整覆盖研究区间?
python·数据分析·pandas·量化交易·股票数据·quantdash
I Am a robert girl5 小时前
当智能体学会“串通”:从长程交互中读懂涌现式合谋
python·多智能体系统·多智能体协作·llm agent·涌现式合谋·对齐问题·激励机制设计
云和数据.ChenGuang6 小时前
光哥说Python RAG 系统需要哪些评估指标:从检索到生成的全链路评测指南
网络·人工智能·python·算法·langchain
专注仿真7 小时前
线性回归和逻辑回归算法详解
开发语言·人工智能·python·大模型训练·控制算法
wflynn8 小时前
GitHub 今日推荐|Edge0:让大号 MoE 模型在一台 Mac 上流式跑起来
python·开源·github
2601_967980118 小时前
python之用scapy分层解析pcap报文(Ethernet帧、IP数据包、TCP数据包、UDP数据包、Raw数据包)
python·scapy·pcap·协议分析·网络数据包