深度学习

卷积神经网络(CNN)

CNN卷积池化LeNet图像识别
一句话摘要

专为处理图像等网格数据设计的深度学习架构,通过卷积层提取特征、池化层降维、全连接层分类。

什么是CNN?

卷积神经网络(Convolutional Neural Network,CNN) 是一类专门处理具有网格结构数据(如图像)的深度学习模型。它通过卷积运算自动提取图像特征,是计算机视觉领域最重要的模型架构。

CNN的核心组件

1. 卷积层(Convolutional Layer)

用一个小的矩阵(卷积核/滤波器)在图像上滑动,对覆盖区域做内积运算,提取局部特征。

卷积运算:将卷积核与图像对应区域的元素逐个相乘,再求和。

不同的卷积核可以提取不同的特征:

  • 边缘检测核(如 [[1,-1],[1,-1]])→ 提取边缘轮廓
  • 模糊核(如 [[1,1],[1,1]])→ 平滑图像

关键参数

  • 输入通道数、输出通道数
  • 卷积核大小(如 5×5)
  • 步长(stride)
  • 填充(padding)

输出尺寸公式:output = (input - kernel + 2×padding) / stride + 1

2. 激活层

通常在卷积层后接 ReLU 激活函数,引入非线性。

3. 池化层(Pooling Layer)

对特征图进行下采样(降维),减少参数量和计算量。

最大池化(Max Pooling):取区域内的最大值

平均池化(Average Pooling):取区域内的平均值

4. 全连接层(Fully Connected Layer)

将卷积和池化提取的特征展平,送入传统神经网络进行分类。

需要先做维度转换:x = x.view(x.size(0), -1),将四维张量展平为二维。

CNN的前向传播顺序

卷积层 → 激活(ReLU) → 池化层 → ... → 全连接层 → 输出层

可以有多个"卷积+激活+池化"块堆叠,逐步提取更高级的特征。

经典架构:LeNet-5

LeNet-5 是最早的CNN之一,用于手写数字识别:

  1. 卷积块1:Conv2d(1→6, 5×5) → ReLU → MaxPool(2×2)
  2. 卷积块2:Conv2d(6→16, 5×5) → ReLU → MaxPool(2×2)
  3. 全连接层:Linear(16×5×5, 120) → Linear(120, 84) → Linear(84, 10)

内积运算与卷积运算

内积(点积)

两个矩阵对应元素相乘后全部求和,结果是一个标量。

A=[[1,1],[1,-1]], B=[[1,2],[3,4]]

内积 = 1×1 + 1×2 + 1×3 + (-1)×4 = 2

卷积运算

卷积核在大矩阵上滑动,每个位置做一次内积运算,结果是一个矩阵。

考试要点

  • CNN前向传播顺序:卷积层→池化层→全连接层→输出层
  • 卷积核 [[1,-1],[1,-1]] 可以做边缘检测
  • 输出尺寸公式:(input - kernel + 2×padding) / stride + 1
  • 全连接层前需要展平:x.view(x.size(0), -1)
  • Conv2d参数:输入通道、输出通道、卷积核大小
微信二维码

扫码备注【NOAI】加交流群