👾 Day 7: 卷积神经网络

1️⃣【技术债与演进动机】The Technical Debt & Evolution
全连接网络处理图像时参数爆炸,无法捕捉空间局部性。CNN 通过卷积核共享参数,提取局部特征。
2️⃣【直觉建立】Visual Intuition
想象一个滤波器在图像上滑动,每个位置计算局部区域的加权和,提取边缘、纹理等特征。
🎬 B 站搜索:卷积神经网络 CNN 直观解释
3️⃣【符号解码字典】The Symbol Decoder
$X$input_tensor (输入特征图,shape: [C, H, W])
$W$self.weight (卷积核,shape: [C_out, C_in, k, k])
$b$self.bias (偏置,shape: [C_out])
$Y$output_tensor (输出特征图)
$s$stride (步长)
$p$padding (填充)
4️⃣【核心推导】The Math
### 卷积运算 $$(X * W)_{i,j} = \sum_{m=0}^{k-1} \sum_{n=0}^{k-1} W_{m,n} \cdot X_{i+m, j+n}$$ ### 输出尺寸计算 $$H_{out} = \left\lfloor \frac{H_{in} + 2p - k}{s} \right\rfloor + 1$$ $$W_{out} = \left\lfloor \frac{W_{in} + 2p - k}{s} \right\rfloor + 1$$ 其中 $k$ 是卷积核尺寸,$p$ 是填充,$s$ 是步长。 ### 梯度反向传播 $$\frac{\partial L}{\partial W} = X_{rotated} * \frac{\partial L}{\partial Y}$$ $$\frac{\partial L}{\partial X} = \frac{\partial L}{\partial Y} * W_{rotated}$$ 其中 $rotated$ 表示 180 度旋转。
5️⃣【工程优化点】The Optimization Bottleneck
卷积运算复杂度 $O(C_{in} \cdot C_{out} \cdot k^2 \cdot H \cdot W)$。使用深度可分离卷积(Depthwise Separable)加速。
6️⃣【今日靶机】The OJ Mission
🎯 任务:cd exercises/ && python3 day7_task.py
实现 2D 卷积层的 forward 和 backward,在 MNIST 数据集上验证卷积特征提取效果。