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)

CNN的架构设计

1. 核心组件概述

卷积神经网络(CNN)的架构设计围绕以下核心组件展开:

  • 卷积层(Convolutional Layers):通过局部感受野和权值共享提取空间特征
  • 池化层(Pooling Layers):降低特征图维度(常用最大池化)
  • 全连接层(Fully Connected Layers):用于最终分类/回归任务

2. 典型架构模式

2.1 堆叠式结构

[Input] → [Conv+ReLU]×N → [Pooling] → [FC Layers] → [Output]
  • 经典案例:LeNet-5的交替堆叠模式
  • 现代变体:使用多个连续卷积层后再池化(如VGG)

2.2 残差结构(ResNet)

# 残差块示例
x → Conv1 → ReLU → Conv2 → + → ReLU → Output
      ↑_________________________↓
  • 解决深层网络梯度消失问题
  • 通过跳跃连接(Skip Connection)实现恒等映射

3. 设计原则

  1. 感受野控制:

    • 小卷积核(3×3)的堆叠 vs 大卷积核(7×7)
    • 空洞卷积(Dilated Convolution)扩大感受野
  2. 特征图尺寸变化:

    • 卷积步长(Stride)控制下采样速率
    • 填充(Padding)策略(Same/Valid)
  3. 通道维度设计:

    • 经典模式:每层通道数逐步增加(16→32→64...)
    • 分组卷积(Group Convolution)降低计算量

4. 现代架构技巧

技术作用典型应用
瓶颈结构(Bottleneck)减少参数量ResNet
深度可分离卷积降低计算成本MobileNet
注意力机制增强重要特征SENet

5. 代码示例(PyTorch)

class CNNBlock(nn.Module):
    def __init__(self, in_ch, out_ch, kernel=3):
        super().__init__()
        self.conv = nn.Sequential(
            nn.Conv2d(in_ch, out_ch, kernel, padding='same'),
            nn.BatchNorm2d(out_ch),
            nn.ReLU(),
            nn.MaxPool2d(2)
        )
    
    def forward(self, x):
        return self.conv(x)

6. 架构评估指标

  1. 计算效率:FLOPs(浮点运算次数)
  2. 内存占用:参数量(Parameters)
  3. 实际速度:在目标硬件上的推理时延

设计建议:根据应用场景平衡模型深度与宽度,视觉任务通常需要3-5个下采样阶段,配合逐步增加的特征通道数。

Last Updated:: 5/20/25, 7:33 PM