全连接层是深度学习、神经网络、卷积神经网络和人工智能中非常基础的一种层结构。它用来描述一种上一层的每个输入都与下一层的每个神经元相连接的神经网络层。换句话说全连接层是在回答模型怎样把上一层提取出的特征综合起来形成最终判断或新的特征表示。如果说卷积层更擅长提取局部特征池化层更擅长压缩特征图那么全连接层更擅长进行整体信息整合。它通常出现在多层感知器、分类器输出头、回归模型输出层和卷积神经网络末端是理解神经网络从“特征提取”走向“任务预测”的重要基础。一、基本概念什么是全连接层全连接层Fully Connected Layer是一种神经网络层。它的特点是上一层的每个输入都连接到下一层的每个输出神经元。假设上一层输出为全连接层有 m 个输出神经元那么输出可以写为其中• x 表示输入向量• W 表示权重矩阵• b 表示偏置向量• y 表示全连接层输出• n 表示输入特征数量• m 表示输出神经元数量如果展开来看第 j 个输出神经元为其中• yⱼ 表示第 j 个输出• wⱼᵢ 表示第 i 个输入到第 j 个神经元的权重• bⱼ 表示第 j 个神经元的偏置从通俗角度看全连接层可以理解为让每个输出神经元都看见上一层的所有信息然后根据权重进行综合判断。全连接层的计算过程示意图因此全连接层也常被称为密集层Dense Layer因为它的连接关系非常密集。二、为什么需要全连接层全连接层之所以重要是因为模型在完成预测前往往需要把前面得到的特征进行综合。例如在图像分类中前面的卷积层可能已经提取出• 边缘特征• 纹理特征• 局部形状• 物体部件• 高级语义特征但是仅仅有这些特征还不够。模型还需要判断这些特征综合起来更像猫、狗还是汽车全连接层的作用就是把前面提取出的各种特征组合起来形成最终分类或回归结果。在表格数据任务中全连接层也非常常见。例如用年龄、收入、地区、消费次数、历史点击率等特征预测用户是否会购买商品。全连接层可以把这些特征加权组合学习它们与目标之间的关系。从通俗角度看• 卷积层负责发现局部特征• 池化层负责压缩和汇总特征• 全连接层负责综合所有特征并做判断因此全连接层经常出现在模型后半部分承担“决策层”或“分类头”的角色。三、全连接层的核心计算过程全连接层的计算本质上是矩阵乘法加偏置。假设输入向量为全连接层有 2 个输出神经元那么权重矩阵可以写为偏置向量为输出为展开后从通俗角度看每个输出神经元都把所有输入特征按不同权重加起来再加上自己的偏置。如果后面接激活函数就变成其中• f 表示激活函数• a 表示经过激活后的输出例如在隐藏层中常接 ReLU在输出层中则根据任务不同选择不同形式• 回归任务通常直接输出数值• 二分类任务常接 Sigmoid• 多分类任务常接 Softmax 或直接输出 logits 给交叉熵损失四、全连接层与人工神经元的关系全连接层可以看成许多人工神经元并排组成的一层。一个人工神经元的计算是如果一层中有多个神经元就会有多个权重向量和多个偏置把这些计算合在一起就得到矩阵形式其中• W 的每一行可以看作一个神经元的权重向量• b 的每一个元素对应一个神经元的偏置• z 的每一个元素对应一个神经元的线性输出从通俗角度看一个全连接层就是一组人工神经元共同处理同一个输入向量。每个神经元都从不同角度综合输入信息• 有的神经元可能关注某些特征组合• 有的神经元可能抑制某些特征• 有的神经元可能学习某种中间模式因此全连接层不是简单“把数字相加”而是让多个神经元同时学习不同的特征组合方式。五、全连接层在不同任务中的作用全连接层可以用于不同类型的任务。1、分类任务在分类任务中全连接层常用于输出类别分数。例如一个模型要把图片分成 10 类最后一层全连接层可以输出 10 个 logits其中• zₖ 表示第 k 个类别的原始分数logits 经过 Softmax 后可以转换成类别概率。多分类概率为从通俗角度看分类任务中的全连接层负责给每个类别打分。2、回归任务在回归任务中全连接层可以直接输出连续数值。例如预测房价时最后一层可以只有一个输出神经元其中• ŷ 表示预测房价• x₁, x₂, …, xₙ 表示上一层特征从通俗角度看回归任务中的全连接层负责把特征综合成一个数值预测。3、隐藏表示学习全连接层也可以作为隐藏层使用。例如输入特征 → 全连接层 → ReLU → 全连接层 → 输出其中中间的全连接层会学习新的特征表示。从通俗角度看隐藏全连接层负责把原始特征重新组合成更适合任务的内部表示。六、全连接层与卷积层的区别全连接层常与卷积层进行比较。1、连接方式不同全连接层中每个输出神经元连接上一层所有输入。如果输入有 n 个特征、输出有 m 个神经元那么权重数量为卷积层则采用局部连接。卷积核每次只看局部区域而不是一次看完整输入。从通俗角度看• 全连接层每个神经元看全部输入• 卷积层每个卷积核看局部区域2、参数共享不同全连接层通常不共享参数。每个连接都有自己的权重。卷积层使用参数共享。同一个卷积核会在输入的不同位置重复使用。因此卷积层在处理图像时参数量通常远小于全连接层。3、适用场景不同全连接层适合处理已经整理成向量的特征例如• 表格数据• 嵌入向量• 卷积层提取后的高级特征• 最终分类或回归输出卷积层更适合处理具有空间局部结构的数据例如• 图像• 视频• 语音频谱• 时间序列局部模式从通俗角度看卷积层擅长提取局部模式全连接层擅长整合全局特征。七、全连接层的参数量问题全连接层的一个重要特点是参数量可能很大。假设输入维度为 n输出维度为 m那么权重参数数量为偏置参数数量为总参数量为例如如果输入维度为 4096输出维度为 1000那么参数量为也就是约 409.7 万个参数。从通俗角度看全连接层很强大但如果输入维度和输出维度都很大参数会迅速增多。这会带来几个问题• 计算成本增加• 存储成本增加• 训练时间变长• 过拟合风险增加因此在现代卷积神经网络中常用全局平均池化减少进入全连接层的特征维度或者使用更轻量的分类头。例如卷积特征图 → 全局平均池化 → 小型全连接分类层这样可以减少参数量提高模型泛化能力。八、全连接层的优势、局限与使用注意事项1、全连接层的主要优势全连接层最大的优势是信息整合能力强。它允许每个输出神经元访问所有输入特征因此可以学习不同特征之间的组合关系。其次全连接层结构简单数学形式清晰再次全连接层适用范围广。它既可以用于普通多层感知器也可以作为 CNN、Transformer 或其他模型中的输出模块。从通俗角度看全连接层的优势在于它能把一组特征全面综合起来形成新的表示或最终判断。2、全连接层的主要局限全连接层也有明显局限。首先参数量容易很大。输入维度和输出维度稍大权重矩阵就会迅速膨胀。其次它不利用空间局部结构。如果直接用全连接层处理图像模型并不知道哪些像素相邻也不会自然共享局部模式。再次全连接层容易过拟合。参数越多模型越容易记住训练集细节而不是学到可泛化规律。此外全连接层对输入维度固定要求较强。输入向量维度必须与权重矩阵匹配否则无法计算。3、使用全连接层时需要注意的问题使用全连接层时需要注意• 输入通常需要整理成向量形式• 参数量随输入维度和输出维度快速增长• 分类任务中最后一层常输出 logits• 回归任务中最后一层通常直接输出连续值• 隐藏全连接层后常接 ReLU、GELU 等激活函数• 过拟合时可考虑 Dropout、权重衰减或减少神经元数量• 图像任务中不宜过早把大尺寸图像直接展平成全连接输入从实践角度看全连接层适合整合高级特征但不适合替代卷积层去处理原始图像中的局部结构。九、Python 示例下面给出几个简单示例用来帮助理解全连接层的基本使用。示例 1用 NumPy 手动计算全连接层import numpy as np # 输入向量3个特征x np.array([1.0, 2.0, 3.0]) # 权重矩阵2个输出神经元每个神经元有3个权重行神经元列输入特征W np.array([ [0.2, -0.5, 1.0], [1.5, 0.3, -0.8]]) # 偏置向量每个神经元一个偏置b np.array([0.1, -0.2]) # 全连接层的线性变换y W·x by W x b # 表示矩阵乘法 print(全连接层输出, y) # 输出形状 (2,)这个例子对应公式其中• W 的每一行对应一个输出神经元的权重• b 的每个元素对应一个输出神经元的偏置• y 包含两个输出神经元的结果示例 2使用 PyTorch 创建全连接层import torch # PyTorch框架import torch.nn as nn # 神经网络模块 # 创建全连接层线性层输入维度3输出维度2layer nn.Linear( in_features3, # 输入特征数 out_features2 # 输出神经元数) # 生成一批随机输入4个样本每个样本3个特征x torch.randn(4, 3) # 前向传播计算线性变换 y x·W^T by layer(x) print(输入形状, x.shape) # torch.Size([4, 3])print(输出形状, y.shape) # torch.Size([4, 2])这个例子中• nn.Linear(3, 2) 表示输入维度为 3输出维度为 2• 输入形状为 4 × 3• 输出形状为 4 × 2也就是说每个样本都会被映射成 2 维输出。示例 3全连接层 激活函数import torch import torch.nn as nn # 定义一个简单的全连接网络4维输入 → 16 → ReLU → 3维输出model nn.Sequential( nn.Linear(4, 16), # 全连接层4 → 16 nn.ReLU(), # ReLU激活 nn.Linear(16, 3) # 全连接层16 → 3输出logits) # 生成一批数据5个样本每个样本4个特征x torch.randn(5, 4) # 前向传播得到未归一化的类别分数logitslogits model(x) print(输出 logits 形状, logits.shape) # torch.Size([5, 3])print(logits)这个模型结构为4 维输入 → 16 维隐藏层 → ReLU → 3 类 logits其中• 第一个全连接层学习隐藏表示• ReLU 引入非线性• 第二个全连接层输出类别分数如果用于多分类任务通常配合 nn.CrossEntropyLoss()。示例 4CNN 中的全连接分类头import torchimport torch.nn as nn # 定义一个简单的卷积神经网络CNNclass SimpleCNN(nn.Module): def __init__(self): super().__init__() # 特征提取部分卷积 ReLU 池化 self.features nn.Sequential( # 第一层卷积输入3通道输出16通道3x3卷积核padding1保持尺寸 nn.Conv2d(3, 16, kernel_size3, padding1), nn.ReLU(), nn.MaxPool2d(kernel_size2), # 2x2最大池化尺寸减半32→16 # 第二层卷积输入16通道输出32通道3x3卷积核padding1 nn.Conv2d(16, 32, kernel_size3, padding1), nn.ReLU(), nn.MaxPool2d(kernel_size2) # 尺寸再减半16→8 ) # 分类部分将特征图展平然后全连接层输出10个类别 self.classifier nn.Sequential( nn.Flatten(), # 将 [B,32,8,8] 展平为 [B,32*8*8] nn.Linear(32 * 8 * 8, 10) # 全连接层2048维 → 10维类别logits ) def forward(self, x): x self.features(x) # 通过卷积层提取特征 x self.classifier(x) # 通过全连接层分类 return x # 实例化模型model SimpleCNN() # 模拟一批输入8张RGB图像图像大小为32x32x torch.randn(8, 3, 32, 32) # 前向传播得到输出logits形状8×10logits model(x) print(输出 logits 形状, logits.shape) # torch.Size([8, 10])这个模型中• 卷积层提取局部图像特征• 池化层降低空间尺寸• Flatten() 把特征图展平成向量• Linear() 全连接层输出 10 个类别的 logits从通俗角度看卷积层提取特征 → 全连接层综合特征并分类。示例 5使用全局平均池化减少全连接层参数量import torchimport torch.nn as nn # 带全局平均池化GAP的简单CNNclass CNNWithGAP(nn.Module): def __init__(self): super().__init__() # 卷积特征提取部分 self.features nn.Sequential( nn.Conv2d(3, 32, kernel_size3, padding1), # 3→32通道保持尺寸 nn.ReLU(), nn.Conv2d(32, 64, kernel_size3, padding1), # 32→64通道 nn.ReLU() ) # 全局平均池化将每个特征图降为1个值输出形状 [B,64,1,1] self.pool nn.AdaptiveAvgPool2d((1, 1)) # 分类器64维 → 10维类别logits self.classifier nn.Linear(64, 10) def forward(self, x): x self.features(x) # 提取特征 x self.pool(x) # GAP池化 x torch.flatten(x, start_dim1) # 展平为 [B,64] x self.classifier(x) # 分类输出 return x model CNNWithGAP() # 一批8张RGB图像尺寸32×32x torch.randn(8, 3, 32, 32) logits model(x) # 前向传播得到logits print(输出 logits 形状, logits.shape) # torch.Size([8, 10])这个例子中• 全局平均池化把每个通道压缩成一个数• 原本较大的特征图被变成 64 维向量• 最后的全连接层只需要从 64 维映射到 10 类这能显著减少全连接层参数量。 小结全连接层是一种每个输入都连接到每个输出神经元的神经网络层。它的核心计算是 y Wx b常用于整合特征、学习隐藏表示和输出分类或回归结果。全连接层信息综合能力强但参数量容易较大也不天然利用图像等数据的局部结构。对初学者而言可以把全连接层理解为让每个输出神经元都看到上一层的全部信息并根据不同权重做综合判断。“点赞有美意赞赏是鼓励”
AI 术语通俗词典:全连接层
全连接层是深度学习、神经网络、卷积神经网络和人工智能中非常基础的一种层结构。它用来描述一种上一层的每个输入都与下一层的每个神经元相连接的神经网络层。换句话说全连接层是在回答模型怎样把上一层提取出的特征综合起来形成最终判断或新的特征表示。如果说卷积层更擅长提取局部特征池化层更擅长压缩特征图那么全连接层更擅长进行整体信息整合。它通常出现在多层感知器、分类器输出头、回归模型输出层和卷积神经网络末端是理解神经网络从“特征提取”走向“任务预测”的重要基础。一、基本概念什么是全连接层全连接层Fully Connected Layer是一种神经网络层。它的特点是上一层的每个输入都连接到下一层的每个输出神经元。假设上一层输出为全连接层有 m 个输出神经元那么输出可以写为其中• x 表示输入向量• W 表示权重矩阵• b 表示偏置向量• y 表示全连接层输出• n 表示输入特征数量• m 表示输出神经元数量如果展开来看第 j 个输出神经元为其中• yⱼ 表示第 j 个输出• wⱼᵢ 表示第 i 个输入到第 j 个神经元的权重• bⱼ 表示第 j 个神经元的偏置从通俗角度看全连接层可以理解为让每个输出神经元都看见上一层的所有信息然后根据权重进行综合判断。全连接层的计算过程示意图因此全连接层也常被称为密集层Dense Layer因为它的连接关系非常密集。二、为什么需要全连接层全连接层之所以重要是因为模型在完成预测前往往需要把前面得到的特征进行综合。例如在图像分类中前面的卷积层可能已经提取出• 边缘特征• 纹理特征• 局部形状• 物体部件• 高级语义特征但是仅仅有这些特征还不够。模型还需要判断这些特征综合起来更像猫、狗还是汽车全连接层的作用就是把前面提取出的各种特征组合起来形成最终分类或回归结果。在表格数据任务中全连接层也非常常见。例如用年龄、收入、地区、消费次数、历史点击率等特征预测用户是否会购买商品。全连接层可以把这些特征加权组合学习它们与目标之间的关系。从通俗角度看• 卷积层负责发现局部特征• 池化层负责压缩和汇总特征• 全连接层负责综合所有特征并做判断因此全连接层经常出现在模型后半部分承担“决策层”或“分类头”的角色。三、全连接层的核心计算过程全连接层的计算本质上是矩阵乘法加偏置。假设输入向量为全连接层有 2 个输出神经元那么权重矩阵可以写为偏置向量为输出为展开后从通俗角度看每个输出神经元都把所有输入特征按不同权重加起来再加上自己的偏置。如果后面接激活函数就变成其中• f 表示激活函数• a 表示经过激活后的输出例如在隐藏层中常接 ReLU在输出层中则根据任务不同选择不同形式• 回归任务通常直接输出数值• 二分类任务常接 Sigmoid• 多分类任务常接 Softmax 或直接输出 logits 给交叉熵损失四、全连接层与人工神经元的关系全连接层可以看成许多人工神经元并排组成的一层。一个人工神经元的计算是如果一层中有多个神经元就会有多个权重向量和多个偏置把这些计算合在一起就得到矩阵形式其中• W 的每一行可以看作一个神经元的权重向量• b 的每一个元素对应一个神经元的偏置• z 的每一个元素对应一个神经元的线性输出从通俗角度看一个全连接层就是一组人工神经元共同处理同一个输入向量。每个神经元都从不同角度综合输入信息• 有的神经元可能关注某些特征组合• 有的神经元可能抑制某些特征• 有的神经元可能学习某种中间模式因此全连接层不是简单“把数字相加”而是让多个神经元同时学习不同的特征组合方式。五、全连接层在不同任务中的作用全连接层可以用于不同类型的任务。1、分类任务在分类任务中全连接层常用于输出类别分数。例如一个模型要把图片分成 10 类最后一层全连接层可以输出 10 个 logits其中• zₖ 表示第 k 个类别的原始分数logits 经过 Softmax 后可以转换成类别概率。多分类概率为从通俗角度看分类任务中的全连接层负责给每个类别打分。2、回归任务在回归任务中全连接层可以直接输出连续数值。例如预测房价时最后一层可以只有一个输出神经元其中• ŷ 表示预测房价• x₁, x₂, …, xₙ 表示上一层特征从通俗角度看回归任务中的全连接层负责把特征综合成一个数值预测。3、隐藏表示学习全连接层也可以作为隐藏层使用。例如输入特征 → 全连接层 → ReLU → 全连接层 → 输出其中中间的全连接层会学习新的特征表示。从通俗角度看隐藏全连接层负责把原始特征重新组合成更适合任务的内部表示。六、全连接层与卷积层的区别全连接层常与卷积层进行比较。1、连接方式不同全连接层中每个输出神经元连接上一层所有输入。如果输入有 n 个特征、输出有 m 个神经元那么权重数量为卷积层则采用局部连接。卷积核每次只看局部区域而不是一次看完整输入。从通俗角度看• 全连接层每个神经元看全部输入• 卷积层每个卷积核看局部区域2、参数共享不同全连接层通常不共享参数。每个连接都有自己的权重。卷积层使用参数共享。同一个卷积核会在输入的不同位置重复使用。因此卷积层在处理图像时参数量通常远小于全连接层。3、适用场景不同全连接层适合处理已经整理成向量的特征例如• 表格数据• 嵌入向量• 卷积层提取后的高级特征• 最终分类或回归输出卷积层更适合处理具有空间局部结构的数据例如• 图像• 视频• 语音频谱• 时间序列局部模式从通俗角度看卷积层擅长提取局部模式全连接层擅长整合全局特征。七、全连接层的参数量问题全连接层的一个重要特点是参数量可能很大。假设输入维度为 n输出维度为 m那么权重参数数量为偏置参数数量为总参数量为例如如果输入维度为 4096输出维度为 1000那么参数量为也就是约 409.7 万个参数。从通俗角度看全连接层很强大但如果输入维度和输出维度都很大参数会迅速增多。这会带来几个问题• 计算成本增加• 存储成本增加• 训练时间变长• 过拟合风险增加因此在现代卷积神经网络中常用全局平均池化减少进入全连接层的特征维度或者使用更轻量的分类头。例如卷积特征图 → 全局平均池化 → 小型全连接分类层这样可以减少参数量提高模型泛化能力。八、全连接层的优势、局限与使用注意事项1、全连接层的主要优势全连接层最大的优势是信息整合能力强。它允许每个输出神经元访问所有输入特征因此可以学习不同特征之间的组合关系。其次全连接层结构简单数学形式清晰再次全连接层适用范围广。它既可以用于普通多层感知器也可以作为 CNN、Transformer 或其他模型中的输出模块。从通俗角度看全连接层的优势在于它能把一组特征全面综合起来形成新的表示或最终判断。2、全连接层的主要局限全连接层也有明显局限。首先参数量容易很大。输入维度和输出维度稍大权重矩阵就会迅速膨胀。其次它不利用空间局部结构。如果直接用全连接层处理图像模型并不知道哪些像素相邻也不会自然共享局部模式。再次全连接层容易过拟合。参数越多模型越容易记住训练集细节而不是学到可泛化规律。此外全连接层对输入维度固定要求较强。输入向量维度必须与权重矩阵匹配否则无法计算。3、使用全连接层时需要注意的问题使用全连接层时需要注意• 输入通常需要整理成向量形式• 参数量随输入维度和输出维度快速增长• 分类任务中最后一层常输出 logits• 回归任务中最后一层通常直接输出连续值• 隐藏全连接层后常接 ReLU、GELU 等激活函数• 过拟合时可考虑 Dropout、权重衰减或减少神经元数量• 图像任务中不宜过早把大尺寸图像直接展平成全连接输入从实践角度看全连接层适合整合高级特征但不适合替代卷积层去处理原始图像中的局部结构。九、Python 示例下面给出几个简单示例用来帮助理解全连接层的基本使用。示例 1用 NumPy 手动计算全连接层import numpy as np # 输入向量3个特征x np.array([1.0, 2.0, 3.0]) # 权重矩阵2个输出神经元每个神经元有3个权重行神经元列输入特征W np.array([ [0.2, -0.5, 1.0], [1.5, 0.3, -0.8]]) # 偏置向量每个神经元一个偏置b np.array([0.1, -0.2]) # 全连接层的线性变换y W·x by W x b # 表示矩阵乘法 print(全连接层输出, y) # 输出形状 (2,)这个例子对应公式其中• W 的每一行对应一个输出神经元的权重• b 的每个元素对应一个输出神经元的偏置• y 包含两个输出神经元的结果示例 2使用 PyTorch 创建全连接层import torch # PyTorch框架import torch.nn as nn # 神经网络模块 # 创建全连接层线性层输入维度3输出维度2layer nn.Linear( in_features3, # 输入特征数 out_features2 # 输出神经元数) # 生成一批随机输入4个样本每个样本3个特征x torch.randn(4, 3) # 前向传播计算线性变换 y x·W^T by layer(x) print(输入形状, x.shape) # torch.Size([4, 3])print(输出形状, y.shape) # torch.Size([4, 2])这个例子中• nn.Linear(3, 2) 表示输入维度为 3输出维度为 2• 输入形状为 4 × 3• 输出形状为 4 × 2也就是说每个样本都会被映射成 2 维输出。示例 3全连接层 激活函数import torch import torch.nn as nn # 定义一个简单的全连接网络4维输入 → 16 → ReLU → 3维输出model nn.Sequential( nn.Linear(4, 16), # 全连接层4 → 16 nn.ReLU(), # ReLU激活 nn.Linear(16, 3) # 全连接层16 → 3输出logits) # 生成一批数据5个样本每个样本4个特征x torch.randn(5, 4) # 前向传播得到未归一化的类别分数logitslogits model(x) print(输出 logits 形状, logits.shape) # torch.Size([5, 3])print(logits)这个模型结构为4 维输入 → 16 维隐藏层 → ReLU → 3 类 logits其中• 第一个全连接层学习隐藏表示• ReLU 引入非线性• 第二个全连接层输出类别分数如果用于多分类任务通常配合 nn.CrossEntropyLoss()。示例 4CNN 中的全连接分类头import torchimport torch.nn as nn # 定义一个简单的卷积神经网络CNNclass SimpleCNN(nn.Module): def __init__(self): super().__init__() # 特征提取部分卷积 ReLU 池化 self.features nn.Sequential( # 第一层卷积输入3通道输出16通道3x3卷积核padding1保持尺寸 nn.Conv2d(3, 16, kernel_size3, padding1), nn.ReLU(), nn.MaxPool2d(kernel_size2), # 2x2最大池化尺寸减半32→16 # 第二层卷积输入16通道输出32通道3x3卷积核padding1 nn.Conv2d(16, 32, kernel_size3, padding1), nn.ReLU(), nn.MaxPool2d(kernel_size2) # 尺寸再减半16→8 ) # 分类部分将特征图展平然后全连接层输出10个类别 self.classifier nn.Sequential( nn.Flatten(), # 将 [B,32,8,8] 展平为 [B,32*8*8] nn.Linear(32 * 8 * 8, 10) # 全连接层2048维 → 10维类别logits ) def forward(self, x): x self.features(x) # 通过卷积层提取特征 x self.classifier(x) # 通过全连接层分类 return x # 实例化模型model SimpleCNN() # 模拟一批输入8张RGB图像图像大小为32x32x torch.randn(8, 3, 32, 32) # 前向传播得到输出logits形状8×10logits model(x) print(输出 logits 形状, logits.shape) # torch.Size([8, 10])这个模型中• 卷积层提取局部图像特征• 池化层降低空间尺寸• Flatten() 把特征图展平成向量• Linear() 全连接层输出 10 个类别的 logits从通俗角度看卷积层提取特征 → 全连接层综合特征并分类。示例 5使用全局平均池化减少全连接层参数量import torchimport torch.nn as nn # 带全局平均池化GAP的简单CNNclass CNNWithGAP(nn.Module): def __init__(self): super().__init__() # 卷积特征提取部分 self.features nn.Sequential( nn.Conv2d(3, 32, kernel_size3, padding1), # 3→32通道保持尺寸 nn.ReLU(), nn.Conv2d(32, 64, kernel_size3, padding1), # 32→64通道 nn.ReLU() ) # 全局平均池化将每个特征图降为1个值输出形状 [B,64,1,1] self.pool nn.AdaptiveAvgPool2d((1, 1)) # 分类器64维 → 10维类别logits self.classifier nn.Linear(64, 10) def forward(self, x): x self.features(x) # 提取特征 x self.pool(x) # GAP池化 x torch.flatten(x, start_dim1) # 展平为 [B,64] x self.classifier(x) # 分类输出 return x model CNNWithGAP() # 一批8张RGB图像尺寸32×32x torch.randn(8, 3, 32, 32) logits model(x) # 前向传播得到logits print(输出 logits 形状, logits.shape) # torch.Size([8, 10])这个例子中• 全局平均池化把每个通道压缩成一个数• 原本较大的特征图被变成 64 维向量• 最后的全连接层只需要从 64 维映射到 10 类这能显著减少全连接层参数量。 小结全连接层是一种每个输入都连接到每个输出神经元的神经网络层。它的核心计算是 y Wx b常用于整合特征、学习隐藏表示和输出分类或回归结果。全连接层信息综合能力强但参数量容易较大也不天然利用图像等数据的局部结构。对初学者而言可以把全连接层理解为让每个输出神经元都看到上一层的全部信息并根据不同权重做综合判断。“点赞有美意赞赏是鼓励”