深度学习笔记:卷积神经网络(CNN)演进与PyTorch构建模型基础

一、卷积神经网络(CNN)的演进

1. LeNet:卷积神经网络的起点

LeNet-5 是早期成功的卷积神经网络之一,用于手写数字识别。其结构分为两部分:

卷积编码器:两个卷积层,使用5×5卷积核和Sigmoid激活函数。

全连接层:三个全连接层用于分类。

LeNet 奠定了CNN的基本结构:卷积层 + 池化层 + 全连接层。

2. 表示学习与视觉分层理论

CNN 的核心思想是表示学习,即通过网络自动学习特征表示,从底层到高层逐步抽象:

底层特征:边缘、颜色、斑块

中层特征:条纹、纹理、形状

高层特征:眼睛、轮胎、文字等语义特征

3. AlexNet:深度学习的里程碑

AlexNet 在2012年ImageNet竞赛中获胜,标志着深度学习在计算机视觉中的崛起。其主要改进包括:

使用 ReLU激活函数(缓解梯度消失)

引入 Dropout(防止过拟合)

使用 最大池化层数据增强技术提升泛化能力

AlexNet 结构比LeNet更深,包含5个卷积层和3个全连接层。

4. VGG:更深的网络与模块化设计

VGG 通过堆叠多个3×3卷积层2×2最大池化层构建更深网络,如VGG-16、VGG-19。其核心思想是:

使用小卷积核堆叠代替大卷积核(减少参数量)

模块化设计(VGG块)便于构建深层网络

二、PyTorch神经网络工具箱基础

1. 核心组件:nn.Modulenn.functional

PyTorch 提供两种主要方式构建神经网络:

nn.Module:

继承自 nn.Module 的类(如 nn.Linear, nn.Conv2d

自动管理参数(weight, bias)

可与 nn.Sequential 结合使用

支持训练/测试状态切换(如Dropout)

nn.functional:

函数式接口(如 F.relu, F.max_pool2d

需手动传入参数,不利于复用

适用于无状态操作(如激活函数、池化)

2. 三种构建模型的方式

继承 nn.Module 基类:

最灵活的方式,可自定义前向传播逻辑。

使用 nn.Sequential:

按顺序堆叠层,支持三种写法:

直接传入层列表(无名)

使用 add_module 添加命名层

使用 OrderedDict 指定每层名称

使用模型容器:

nn.ModuleList:存储子模块,支持迭代

nn.ModuleDict:通过名字访问子模块

3. 自定义网络模块示例:残差块

残差块有两种形式:

直接相加输入与输出(需形状一致)

通过1×1卷积调整通道数后再相加

这些模块可组合成现代网络如 ResNet

三、总结

从LeNet到VGG,CNN通过更深的结构更好的激活函数正则化技术模块化设计 不断提升性能。而在PyTorch中,我们可以通过 nn.Modulenn.Sequential 等工具灵活构建这些网络结构,实现从理论到实践的无缝衔接。

相关推荐
科技苑6 分钟前
如何打造一个高效的全栖内容制作生态系统?
深度学习
陈年老古董21 分钟前
MediaPipe 姿态检测与脸部关键点检测
笔记·python·opencv·学习·dlib
彧azz41 分钟前
操作系统时间管理与系统核心板块学习总结
c语言·笔记·学习·系统架构
zhangrelay1 小时前
《机器人控制器设计与编程》课程习题资料-2026
linux·笔记·学习·ubuntu
志尊宝1 小时前
Vue3 零基础每日笔记(055):组件里正确使用 store——storeToRefs 解构与 $patch 批量修改
笔记·vue·html·前端开发·软件开发
江屿风2 小时前
【认识深度学习】【深度学习分类与计算机视觉任务要点解析】流食般投喂
大数据·人工智能·深度学习·计算机视觉·目标跟踪·自然语言处理·语音识别
kkkkkkkkkk_Z2 小时前
新手自学嵌入式|学习日记:从C语言到51单片机基础(GPIO、中断、定时器与PWM篇)
linux·笔记·学习·51单片机
童园管理札记2 小时前
从政策驱动到课堂落地:2026年“人工智能+教育”全景解读与技术实践指南
人工智能·python·深度学习·职场和发展·学习方法
陈年老古董2 小时前
微博情感分析项目学习笔记
笔记·python·学习·机器学习·项目
2601_960631232 小时前
如何用公开数据接口查询制药企业资质信息
笔记