卷积神经网络(CNN)自学笔记1:全连接层
创作时间:
作者:
@小白创作中心
卷积神经网络(CNN)自学笔记1:全连接层
引用
CSDN
1.
https://blog.csdn.net/yuyu_297/article/details/139036238
卷积神经网络(CNN)是深度学习领域的重要模型之一,在图像识别、自然语言处理等领域有着广泛的应用。其中,全连接层(Fully Connected Layers,简称FC层)作为CNN中的关键组件,负责将卷积层和池化层提取到的特征进行分类。本文将详细介绍全连接层的定义、作用及其在PyTorch中的实现方法。
一、全连接层的定义
全连接层(fully connected layers,FC)是神经网络的一种基本层类型,通常位于网络的最后几层,用于分类任务的输出层。全连接层的主要特点是每一个神经元与前一层的每一个神经元都相连接,这意味着每个输入都影响每个输出。在全连接层中,输入向量通过一个权重矩阵进行线性变换,然后加上一个偏置项,最后通过激活函数(如ReLU、Sigmoid、Tanh等)进行非线性变换。
公式表达:
图1 多层全连接层的前向传播过程
其中,
- 为输出向量,
- 为激活函数,
- 为权重矩阵,
- 为偏置向量。
二、全连接层的作用
- 在整个卷积神经网络中起到“分类器”的作用。
在分类任务中,全连接层通常作为网络的最后一层,直接将全连接层的维度设为类别数量或通过Softmax函数输出每个类别的概率分布,从而实现对输入数据的分类。如果说卷积层、池化层和激活函数等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的“分布式特征表示”映射到样本标记空间的作用。
- 维度变换
可以把高维变到低维,或者把低维变到高维,同时把有用的信息保留下来。
图2 全连接层的作用
三、全连接层的实现
import torch
import torch.nn as nn
import torch.optim as optim
import torch.nn.functional as F
# 定义神经网络模型
class SimpleNN(nn.Module):
def __init__(self, input_size, num_classes):
super(SimpleNN, self).__init__()
self.fc1 = nn.Linear(input_size, 64) # 第一个全连接层
self.fc2 = nn.Linear(64, 32) # 第二个全连接层
self.fc3 = nn.Linear(32, num_classes) # 输出层,维度为类别数量
def forward(self, x):
x = F.relu(self.fc1(x)) # ReLU激活函数
x = F.relu(self.fc2(x))
x = self.fc3(x) # 最后一层不需要激活函数,因为我们会在损失函数中应用Softmax
return x
# 模型实例化
input_size = 128 # 假设输入数据的特征维度为128
num_classes = 10 # 假设有10个类别
model = SimpleNN(input_size, num_classes)
# 打印模型结构
print(model)
# 损失函数和优化器
criterion = nn.CrossEntropyLoss() # CrossEntropyLoss包含了Softmax
optimizer = optim.Adam(model.parameters(), lr=0.001)
# 假设有一些数据用于训练
# inputs: shape (batch_size, input_size)
# labels: shape (batch_size)
inputs = torch.randn(32, input_size) # 32个样本,输入特征维度为128
labels = torch.randint(0, num_classes, (32,)) # 32个样本的标签,范围在0到9之间
# 训练步骤
outputs = model(inputs) # 前向传播
loss = criterion(outputs, labels) # 计算损失
optimizer.zero_grad() # 清空梯度
loss.backward() # 反向传播
optimizer.step() # 更新参数
# 打印损失
print(f'Loss: {loss.item()}')
在实际使用中,全连接层也可由卷积操作实现:
- 当前一层是全连接层时,全连接层可以被 1×1 卷积层替代。原因在于 1×1 卷积层会对输入的每一个位置进行一个全连接操作,同时保持输入特征图的空间维度不变。
- 当前一层是卷积层时,全连接层可以被一个卷积核为 ℎ×𝑤 的卷积层替代,其中 ℎ 和 𝑤 是前一层卷积结果的高和宽。这种全局卷积操作实际上是对整个特征图进行一次全连接操作,实现与全连接层相同的效果。
热门推荐
乳胶漆怎么洗掉的方法
耗资$52亿、飞行6年!NASA发射探测器到木卫二寻找生命
研究证实:定期更换筷子可降低胃癌风险,推荐使用这两种筷子
家用筷子怎么选:竹筷子好还是木筷子好?什么材质的筷子最健康?
白玉兰“先头部队”已盛放,下周要睡“回笼觉”,盛花将在三月中上旬
如何通过官方渠道查询电话卡信息
抑郁症复发怎么冶疗效果好
身体虚弱可以打氨基酸注射液吗?医生的专业解答
犯人为什么犯法:从心理、生理和社会因素分析犯罪行为的原因
近视科普:如何正确配戴眼镜?
《自然·医学》:阿尔茨海默病诊断重大突破!可靠的血检终于来啦!
RFID读写器:提升资产管理效率的最佳选择
脚踝韧带断裂怎么回事
税收主要分为哪4类
连平:如何看下半年全球经济走势及其对我国的影响
从特朗普交易到政策驱动:A股市场结构调整,关注这些板块
十大最火的野外生存节目:荒野求生类节目排行
AA电池是什么电池?一文详解AA电池的定义、分类与使用注意事项
NBA三分线
橘子能减轻热感冒症状吗
下载影音资源时显示的H.264、H.265,到底是什么?
北京四合院:历史、文化与风水布局的完美融合
心电图上的“小插曲”:完全性左束支阻滞
逆矩阵求法详解:从定义到计算步骤的全面解析
如何删除iPhone、iPad等设备自动下载的系统更新?
2025年福建省高职院校分类考试招生(春季高考)招生院校有哪些?
梦到菜刀砍人:探究梦境中的暴力倾向
屈原投江的故事简述
追缴和收缴有什么区别
牛奶过期了还能喝吗