跳转到内容

6.3.1 CNN 路线图:把图像变成特征图

CNN 学习局部视觉模式。它不是把图像直接摊平成一行,而是扫描小区域并生成特征图。

CNN 章节关系图

CNN 感受野增长图

概念第一层意思
channel颜色或学到的特征维度
kernel小的滑动滤波器
feature map滤波器扫过图像后的输出
pooling / stride缩小空间尺寸
transfer learning复用预训练视觉骨干

创建 cnn_first_loop.py,安装 torch 后运行。

import torch
image = torch.randn(1, 3, 32, 32)
conv = torch.nn.Conv2d(in_channels=3, out_channels=8, kernel_size=3, padding=1)
features = conv(image)
print("input_shape:", tuple(image.shape))
print("feature_shape:", tuple(features.shape))

预期输出:

Terminal window
input_shape: (1, 3, 32, 32)
feature_shape: (1, 8, 32, 32)

把形状读成 [batch, channels, height, width]。卷积把 3 个输入通道变成了 8 个学习到的特征通道。

顺序阅读练什么
16.3.2 卷积基础kernel、stride、padding、channel
26.3.3 CNN 结构卷积块、池化、分类头
36.3.4 经典架构LeNet、AlexNet、VGG、ResNet 直觉
46.3.5 迁移学习冻结骨干、微调
56.3.6 图像分类实战数据集、训练、预测样例

保留一条 CNN shape 笔记:

输入
[batch, channels, height, width]
卷积输出
out_channels 变成新的特征图
空间变化
stride/padding/pooling 改变高和宽
分类器桥接
卷积特征最终变成类别 logits
迁移学习选择
先冻结,只有验证集提升时才微调

能解释输入图像形状和特征图形状之间发生了什么变化,并知道为什么小数据集常复用预训练 CNN 骨干,就算通过。

检查思路与讲解
  1. 合格答案要把 tensor、模型层、loss、backward() 和 optimizer 更新连成一个训练闭环。
  2. 证据应包含可运行的小实验、tensor shape 检查,以及能解释的 loss 或验证曲线。
  3. 自检时要能指出一个失败模式,例如 shape 不匹配、loss 不下降、过拟合、数据泄漏,或只会说 Attention/Transformer 名词却讲不出数据流。