卷积神经网络知识点总结

文章目录


一段话总结

本章围绕卷积神经网络(CNN)展开全面讲解,核心介绍了CNN解决图像处理高参数、丢失空间信息的核心优势,其具备局部区域连接权值共享 特点,由输入层、卷积层、池化层、全连接层和Softmax层构成,还讲解了PyTorch中torch.nn 模块的两大核心组件nn.Modulenn.functional 的区别与使用原则;深入阐述卷积核、单/多通道卷积、步长、填充等卷积核心概念,给出特征图尺寸计算公式,讲解深度可分离卷积的逐通道、逐点卷积构成;介绍PyTorch中卷积层、批量标准化、激活函数、池化层、线性层的实现函数与使用方法;分析AlexNet、VGG16、GoogleNet、ResNet等经典CNN架构特点,重点讲解残差、倒残差结构及MobileNet V2网络架构,并提供MobileNet V2和自定义简单CNN模型的搭建实例,同时提及torch.utils.data下Dataset、DataLoader的数据集构建与加载方法。


思维导图

详细总结

一、卷积神经网络概述

  1. CNN的核心优势 :解决传统图像处理参数量大 (如2242243图像输入参数达150528个)、扁平化丢失空间信息的问题,实现参数降维,保留图像特征,可识别翻转、旋转等变换后的图像。

  2. 核心特点局部区域连接权值共享

  3. 一般构成:输入层→卷积层→池化层→全连接层→Softmax层,最终输出分类结果。

  4. 神经网络核心组件

    • 层:基本结构,实现输入张量到输出张量的转换;

    • 模型:由多层链接而成,将输入转换为预测值;

    • 损失函数:对比预测值与真实值,输出损失值衡量匹配度;

    • 优化器:利用损失值更新权重,使损失值降低,达到阈值/指定次数后停止。

  5. torch.nn模块(PyTorch核心库)

模块 形式 示例 使用原则
nn.Module 类(首字母大写) nn.Conv2d、nn.MaxPool2d 可学习参数的层使用
nn.functional 函数(全小写) nn.functional.conv2d、nn.functional.linear 可学习参数的层使用
  • nn.Sequential:将多个层包装为一个大层,适用于简单序列模型;复杂模型需继承nn.Module并实现forward方法,可学习参数层放__init__,无参数层可放forward。

二、卷积核心概念与运算

  1. 卷积核 :大小为m×n的可学习滤波器,矩阵元素为权重 w i j w_{ij} wij ,核心作用是提取输入数据的局部特征(边缘、纹理、角落等)。

  2. 图像卷积运算

    • 单通道卷积:卷积核在图像/特征图上滑动,对应位置相乘求和得到新特征值;

    • 多通道卷积:卷积核通道数与输入一致,先逐通道做单通道卷积,再将特征图对应位置相加,最终输出1个特征图。

  3. 关键参数

    • 步长(Stride) :卷积核每次滑动的行列数,可成倍缩小输入尺寸,步长为 n n n 则尺寸缩小为原来的 1 / n 1/n 1/n ;

    • 填充(Padding):在输入矩阵边缘补0,减少边缘像素信息丢失,提升特征提取完整性。

  4. 特征图尺寸计算公式 :设输入尺寸 n × n n×n n×n ,卷积核 k × k k×k k×k ,步长 s s s ,填充个数 p p p ,则输出尺寸=(n+2p-k)/s +1

  5. 深度可分离卷积(DSC) :由**逐通道卷积(DW)逐点卷积(PW)**组成,参数量远低于常规卷积,运算成本低。

    • 逐通道卷积:输入 n n n 通道对应 n n n 个1通道卷积核,输出 n n n 个特征图,如3×3卷积核处理3通道图像,参数量为 3 × 3 × 1 × 3 = 27 3×3×1×3=27 3×3×1×3=27 ;

    • 逐点卷积:卷积核固定为 1 × 1 × C 1×1×C 1×1×C (C为输入通道数),卷积核个数=输出通道数,与常规卷积逻辑一致。

三、卷积层、批量标准化、激活函数

  1. 卷积层

    • 常规二维卷积 :通过torch.nn.Conv2d()实现,核心参数包括in_channels(输入通道)、out_channels(输出通道/卷积核数)、kernel_size(卷积核尺寸)、stride(步长)、padding(填充)、groups(分组,groups=in_channels为逐通道卷积)等;

    • 深度可分离卷积 :PyTorch无专用函数,通过nn.Conv2d组合实现,DW设groups=输入通道数,PW设kernel_size=1。

  2. 批量标准化(BN)

    • 作用:降低内部协变量变化,加快模型训练速度,提升性能和稳定性;

    • 实现:nn.BatchNorm2d(),核心参数num_features(输入通道数)、eps(稳定系数,防分母为0)、momentum(均值/方差更新参数)、affine(是否学习gamma/beta)。

  3. 激活函数 :为网络提供非线性建模能力,常用类型及PyTorch实现如下:

激活函数 输出范围 PyTorch实现 特点
Sigmoid (0,1) nn.Sigmoid() 适合二分类,易梯度消失
Tanh (-1,1) nn.Tanh() 零均值输出,仍易梯度消失
ReLU [0,+∞) nn.ReLU() 解决梯度消失,计算高效
ReLU6 [0,6] nn.ReLU6() 限制最大输出,适配移动端
Softmax (0,1) nn.Softmax(dim) 多分类,输出各类概率,dim指定计算维度

四、池化层、线性层

  1. 池化层 :非线性操作,核心功能为减小特征尺寸、提高运算速度、减小噪声影响,包含4种类型,PyTorch实现及特点如下:
池化类型 PyTorch实现 核心特点
最大值池化 nn.MaxPool2d() 提取局部最大值,保留纹理特征
均值池化 nn.AvgPool2d() 提取局部均值,保留整体特征
全局最大池化 nn.AdaptiveMaxPool2d() 池化窗口=输入尺寸,输出全局最大值
全局均值池化 nn.AdaptiveAvgPool2d() 池化窗口=输入尺寸,输出全局均值
  1. 线性层(全连接层)

    • 原理:每个神经元与上一层所有神经元相连,实现前一层线性组合;

    • 实现:torch.nn.Linear(in_features, out_features, bias=True),参数in_features(输入样本大小)、out_features(输出样本大小)、bias(是否添加偏差)。

五、常见卷积神经网络及搭建实例

  1. 经典CNN架构特点
架构 核心结构 关键特点
AlexNet 8层(5卷积+3全连接) 比LeNet更深,用ReLU替代Sigmoid,Data Augmentation+Dropout抑制过拟合
VGG16 5组卷积+5池化+3全连接 3×3小卷积核 替代大卷积核、2×2小池化核,网络更深更宽,扩充通道数降尺寸
GoogleNet Inception模块化结构 多尺度卷积核提取特征,平均池化替代全连接层,保留Dropout抑制过拟合
ResNet 残差结构(BasicBlock/Bottleneck) 隔层相连(shortcut)解决梯度消失/爆炸网络退化,BatchNorm辅助优化
  1. 特殊结构

    • 残差结构:分BasicBlock(2个3×3卷积)和Bottleneck(1×1降维+3×3卷积+1×1升维),通过shortcut实现特征矩阵隔层相加,降低深层网络退化;

    • 倒残差结构 :MobileNetV2提出,流程为扩张-卷积-压缩 (与残差的"压缩-卷积-扩张"相反),高维特征经ReLU激活信息丢失少,末层用线性瓶颈替代ReLU,避免低维特征信息丢失。

  2. MobileNet V2

    • 亮点:倒残差结构 +线性瓶颈,适配移动端,参数量少、运算效率高;

    • 结构:1个常规卷积+17个倒残差模块+1个1×1卷积+1个全连接层;

    • 实现:基于nn.Module构建倒残差类InvertedResidual,再组合为MobileNetV2主类,配置扩展率、输出通道、循环次数、步长等参数。

  3. 自定义简单CNN模型:整合卷积(Conv2d)、批量标准化(BatchNorm2d)、激活函数(ReLU)、池化(MaxPool2d)、Dropout(随机失活)、线性层(Linear),继承nn.Module实现__init__和forward方法,完成特征提取到分类的端到端流程。

六、数据集相关(本章小结补充)

  1. 核心类:torch.utils.data下的Dataset (自定义数据集需重写__len____getitem__方法)、DataLoader(实现数据集的分批加载);

  2. 图片数据集构造方法:ImageFolder (按文件夹结构构造)、地址列表构造(通过图像地址列表加载)。


关键问题

问题1:PyTorch中nn.Module和nn.functional的核心区别是什么?搭建网络时的使用原则是什么?

答案 :核心区别在于存在形式和参数管理,nn.Module是 (首字母大写),层的参数由框架自动管理;nn.functional是函数 (全小写),无自动参数管理能力。使用原则为:带可学习参数 的层(如Conv2d、Linear)使用nn.Module;无可学习参数的层(如ReLU、MaxPool2d)可使用nn.functional或nn.Module均可。

问题2:深度可分离卷积与常规卷积相比为何参数量更低?其由哪两部分组成,各有什么特点?

答案 :常规卷积的参数量为卷积核宽×高×输入通道数×输出通道数,而深度可分离卷积将卷积拆分为逐通道卷积(DW)和逐点卷积(PW),分步计算大幅减少参数量。其两部分特点:①逐通道卷积(DW):输入n通道对应n个1通道卷积核,仅对单通道独立卷积,不改变通道数,参数量极少;②逐点卷积(PW):用1×1的卷积核,实现通道数的变换,卷积核个数等于输出通道数,仅做通道维度的线性组合。

问题3:ResNet的残差结构解决了什么问题?MobileNetV2的倒残差结构对残差结构做了哪些改进,为何更适配移动端?

答案 :①ResNet的残差结构通过shortcut隔层连接 ,解决了深层神经网络的梯度消失/爆炸网络退化 问题,让网络深度增加时性能不下降反而提升;②MobileNetV2的倒残差结构将残差的"压缩-卷积-扩张"流程改为扩张-卷积-压缩 ,先升维得到高维特征,经ReLU激活后信息丢失更少,且末层用线性瓶颈 替代ReLU,避免低维特征信息丢失;同时倒残差结构基于深度可分离卷积构建,参数量少、运算成本低,更适配移动端的算力和内存限制。

相关推荐
火山引擎开发者社区2 小时前
5000 字技术向拆解 | 火山引擎多模态数据湖如何释放模思智能的算法生产力
人工智能
孟陬2 小时前
另一个角度看 OpenClaw 分析 package.json 依赖看 2026 年包最新趋势
人工智能·ai编程
minstbe2 小时前
IC设计私有化AI助手实战:基于Docker+OpenCode+Ollama的数字前端综合增强方案(基础版)
前端·人工智能·docker
沪漂阿龙2 小时前
从“火星文”到语义理解:破解NLP中的OOV未登录词难题
人工智能·自然语言处理
ASD123asfadxv2 小时前
倒残差移动块与滑动窗口注意力改进YOLOv26局部感知与全局建模双重突破
人工智能·yolo·目标跟踪
商业咨询信息2 小时前
中之网科技江苏有限公司:四核驱动数字营销,构筑GEO优化+短视频运营+宣传片拍摄+网站建设全链路服务生态
人工智能·新媒体运营
咚咚王者2 小时前
人工智能之语言领域 自然语言处理 第十二章 Transformer架构
人工智能·自然语言处理·transformer
zzb15802 小时前
Agent学习-Reflection框架
java·人工智能·python·学习·ai