Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 第4章:卷积神经网络(CNN)

第4章:卷积神经网络(CNN)

4.1 卷积运算与池化

1. 卷积运算的基本概念

卷积(Convolution)是CNN的核心操作,其本质是通过滑动窗口(卷积核)对输入数据进行局部特征提取。数学上定义为两个函数的乘积积分,但在图像处理中通常表示为离散形式的加权求和:

S(i,j)=(I∗K)(i,j)=∑m∑nI(i+m,j+n)K(m,n)S(i,j) = (I * K)(i,j) = \sum_m \sum_n I(i+m, j+n) K(m,n) S(i,j)=(I∗K)(i,j)=m∑​n∑​I(i+m,j+n)K(m,n)

其中:

  • III 为输入矩阵(如图像像素矩阵)
  • KKK 为卷积核(滤波器)
  • SSS 为输出特征图

关键特性:

  • 局部连接:每个输出神经元仅与输入层的局部区域连接
  • 参数共享:同一卷积核在整张图像上滑动复用
  • 平移不变性:无论特征出现在图像哪个位置都能被检测到

2. 卷积操作的超参数

参数说明典型值
卷积核大小决定感受野大小(如3×3, 5×5)3×3最常见
步长(Stride)滑动步长,影响输出尺寸1或2
填充(Padding)边界处理方式("valid"不填充/"same"保持尺寸)常用zero-padding
输入/输出通道多通道卷积实现特征组合依网络设计而定

3. 池化操作(Pooling)

池化层用于降维和保持平移不变性,常见类型:

最大池化(Max Pooling)

Output=max⁡i,j∈R(xi,j)\text{Output} = \max_{i,j \in R} (x_{i,j}) Output=i,j∈Rmax​(xi,j​)

  • 保留区域最显著特征
  • 对微小位移具有鲁棒性

平均池化(Average Pooling)

Output=1∣R∣∑i,j∈Rxi,j\text{Output} = \frac{1}{|R|} \sum_{i,j \in R} x_{i,j} Output=∣R∣1​i,j∈R∑​xi,j​

  • 平滑特征响应
  • 常用于网络末端

特性对比:

类型优点缺点适用场景
最大池化保留纹理特征丢失细节信息浅层特征提取
平均池化保持整体特征分布模糊重要特征全局特征聚合

4. 计算示例(3×3卷积)

假设输入为5×5矩阵,3×3卷积核,stride=1,padding=0:

输入矩阵:        卷积核:      输出计算:
[[1 1 1 0 0]    [[1 0 1]    (1*1 + 1*0 + 1*1 + 0*0 + 1*1 + 0*0 + 1*1 + 0*0 + 1*1) = 4
 [0 1 0 0 1]     [0 1 0]     后续位置同理...
 [1 0 1 1 1]     [1 0 1]]    
 [0 1 1 0 0]               最终输出3×3特征图
 [1 1 0 1 0]]

5. 可视化理解

卷积运算示意图
(图示:3×3卷积核在5×5输入上的滑动过程)

6. 工程实践建议

  1. 卷积核选择:浅层常用小尺寸核(3×3)提取基础特征
  2. 步长设计:大步长(如2)可替代池化实现降采样
  3. 空洞卷积:通过dilation参数增大感受野而不增加参数量
  4. 1×1卷积:用于通道维度上的特征重组和降维

注:现代CNN架构(如ResNet)常使用"卷积+BN+ReLU"的标准模块组合


这个内容包含数学原理、可视化示例和工程实践要点,可作为教材或技术文档的基础内容。需要扩展时可添加:
1. 不同padding方式的详细计算示例
2. 转置卷积(反卷积)的说明
3. 各框架中的具体API实现对比
Last Updated:: 6/17/25, 10:13 AM