首页 > 其他分享 >深度学习基础知识-全连接层

深度学习基础知识-全连接层

时间:2024-11-04 18:18:07浏览次数:3  
标签:输出 卷积 self 基础知识 深度 连接 输入 神经元

全连接(Fully Connected,简称 FC)层是深度学习神经网络中一种基本的层结构。它主要用于神经网络的最后几层,将高层特征映射到输出空间中。全连接层对数据的每个输入节点与每个输出节点进行连接,用于实现输入特征和输出结果之间的映射关系。以下是对全连接层的详细解释。

1. 全连接层的结构和原理

在全连接层中,每一个输入节点与每一个输出节点之间都有一条连接线。假设输入层有 n 个神经元,输出层有 m 个神经元,那么全连接层的连接总数为 n×m。这意味着所有的输入神经元都会影响到输出层的每一个神经元。

数学表示

对于全连接层,可以将其操作视为矩阵乘法加上偏置项的操作。假设输入特征向量 X 的大小为 (n,1),全连接层的权重矩阵 W 的大小为 (m,n),偏置向量 BBB 的大小为 (m,1),则全连接层的输出 Y 可表示为:

  • 权重矩阵 W:全连接层中每一个神经元都和前一层的每一个神经元相连接,这些连接的权重形成一个矩阵 W。它是神经网络的可训练参数。
  • 偏置向量 B:每个输出神经元都会有一个独立的偏置项,用来调整输出的整体水平,类似于线性回归中的截距。
激活函数

通常,经过全连接层的输出会传入一个激活函数(例如 ReLU、Sigmoid 或 Softmax 等),以引入非线性。这样可以提高网络的表达能力,使其能够拟合复杂的函数关系。

2. 全连接层的用途

全连接层在深度学习中主要用于以下几个场景:

  • 分类任务:在分类模型的输出层,全连接层的输出维度通常等于类别数。通过 Softmax 激活函数可以得到每个类别的概率分布。
  • 特征融合:在卷积神经网络(CNN)中,全连接层用于将提取的特征进行全局融合。CNN 的卷积层和池化层提取了局部特征,而全连接层能整合这些特征,用于更全面的决策。
  • 生成输出:在生成模型中(如生成对抗网络的判别器部分),全连接层用于生成图像、文本等数据的最后输出。

3. 全连接层的优缺点

优点
  • 表达能力强:全连接层由于每个节点间都相互连接,具有很强的特征表达能力。
  • 通用性高:几乎可以应用于任意结构的神经网络中,尤其是最后几层,适用于各种输出。
缺点
  • 参数量大:由于每个节点彼此相连,尤其是输入维度较高时,会产生非常多的参数,导致内存需求较大。
  • 冗余连接:全连接层会连接输入层的每一个神经元,可能会引入不必要的连接,从而影响模型的泛化能力。
  • 计算量大:全连接层的权重矩阵计算复杂度高,尤其对于大型网络和数据量较大的应用来说,计算开销较高。

4. 全连接层与卷积层的区别

  • 连接方式:全连接层中的每个神经元连接到前一层的每一个神经元,而卷积层只连接局部的神经元,进行局部特征提取。
  • 参数共享:卷积层中的卷积核是共享的,参数数量较少,而全连接层参数量大。
  • 空间信息:卷积层会保留输入的空间信息,适合处理图像数据;全连接层将所有输入“展平”,因此会丢失空间结构信息。

5. 如何减少全连接层的参数量

由于全连接层参数量大,占用内存多且容易导致过拟合,因此可以通过以下方法减少参数量:

  • Dropout:在训练时随机丢弃一部分神经元,防止过拟合,并减少计算量。
  • 参数共享:减少一些不必要的连接,尤其是输入特征较高维度时。
  • 使用更少的全连接层:在一些任务中,可以通过减少全连接层的数量来减少参数量。
  • 结合卷积层:在 CNN 网络中,将特征提取的主要工作交给卷积层,全连接层只用于最后的少量决策。

6. 示例代码

import torch
import torch.nn as nn
import torch.optim as optim

# 定义一个全连接神经网络
class FCNN(nn.Module):
    def __init__(self):
        super(FCNN, self).__init__()
        self.fc1 = nn.Linear(784, 128)    # 全连接层,将输入展平到128维
        self.fc2 = nn.Linear(128, 64)     # 全连接层,输出64维
        self.fc3 = nn.Linear(64, 10)      # 全连接层,输出10维(用于分类)

    def forward(self, x):
        x = x.view(-1, 784)               # 将输入展平为 (batch_size, 784)
        x = torch.relu(self.fc1(x))       # 使用ReLU激活函数
        x = torch.relu(self.fc2(x))       # 使用ReLU激活函数
        x = torch.softmax(self.fc3(x), dim=1)  # 使用Softmax激活函数
        return x

# 实例化模型
model = FCNN()

# 定义损失函数和优化器
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)

# 打印模型结构
print(model)

# 示例训练步骤(假设已经有输入数据和标签)
# 假设输入数据 x 的大小为 (batch_size, 1, 28, 28),标签 y 的大小为 (batch_size,)
# 输入数据为28x28大小图像,并在批量训练模式下

# 训练一个 epoch
for epoch in range(1):  # 这里只示例一个 epoch
    # 假设输入数据和标签
    x = torch.randn(32, 1, 28, 28)  # 随机生成一个批次的数据
    y = torch.randint(0, 10, (32,)) # 随机生成对应的标签

    # 前向传播
    outputs = model(x)
    loss = criterion(outputs, y)

    # 反向传播与优化
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

    print(f'Epoch [{epoch+1}], Loss: {loss.item():.4f}')

标签:输出,卷积,self,基础知识,深度,连接,输入,神经元
From: https://blog.csdn.net/qq_45998729/article/details/143490936

相关文章

  • 连接数据库与JDBC的简单操作
    连接数据库的步骤没有错,但是mysql--8与jar包--5的版本不匹配导致数据库连接不成功,后面导入8版本的jar包后就连接数据库成功了。但是报错:Exceptioninthread"main"java.sql.SQLException:Theservertimezonevalue'�й���׼ʱ��'isunrecognizedorrepresentsmorethanoneti......
  • Chrome与傲游浏览器性能与功能的深度对比
    在当今数字化时代,浏览器作为我们日常上网冲浪、工作学习的重要工具,其性能与功能直接影响着我们的使用体验。本文将对Chrome和傲游两款主流浏览器进行深度对比,帮助用户更好地了解它们的差异,以便做出更合适的选择。(本文由https://chrome.xahuapu.net/的作者进行编写,转载时请进行......
  • 【ONLYOFFICE 文档 8.2 版本深度测评】功能革新与用户体验的双重飞跃
    引言在数字化办公的浪潮中,ONLYOFFICE文档以其强大的在线协作功能和全面的办公套件解决方案,赢得了全球用户的青睐。随着8.2版本的发布,ONLYOFFICE再次证明了其在办公软件领域的创新能力和技术实力。一.协作编辑PDF:团队合作的新纪元1.1严格与实时协作模式ONLYOFFICE......
  • 简单介绍机器学习与深度学习以及相关算法
    机器学习算法线性回归解释:线性回归是一种简单的预测算法,它通过寻找输入变量和输出变量之间的线性关系来进行预测。例子:假设你想预测一个房子的价格,可以根据房子的面积(输入)和价格(输出)画一条直线,线性回归就是找到这条最合适的直线。逻辑回归解释:尽管名字中有“回归”,逻......
  • vscode远程连接服务器
    VSCode远程连接服务器安装VSCode软件官网:DownloadVisualStudioCode-Mac,Linux,WindowsRemoteSSH插件连接服务器需要通过RemoteSSH扩展插件。安装好插件之后左侧会多一个RemoteExplorer的选项配置SSH文件回车继续点击3那两个按钮均可连接服务器开始连接之后......
  • 强噪声下基于mscnn-bigru-attention深度学习模型CWRU(凯斯西储大学)轴承故障诊断(Pytho
     1.效果视频(以0HP数据集为例,在-30DB下的测试准确率效果)强噪声下基于mscnn-bigru-attention深度学习模型CWRU(凯斯西储大学)轴承故障诊断_哔哩哔哩_bilibili对原始信号分别添加不同强度的高斯白噪声,以模拟实验数据遇到的实际环境中干扰噪声。原始信号(以0HP数据为例进行展示,可......
  • 带界面下的基于mscnn-bigru-attention深度学习模型江南大学轴承故障诊断(Python代码,很
     1。效果视频:基于mscnn-bigru-attention深度学习模型江南大学轴承故障诊断带界面_哔哩哔哩_bilibili 2.江南大学轴承数据集介绍采样频率:50khz,采样时间:10s转速:6008001000/rpm内圈故障:ib外圈故障:ob滚动体故障:tb正常:N 以600转速下的内圈故障数据为例展示:开始数据......
  • 学习011-08-15 Connect an XAF Application to a Database Provider(将 XAF 应用程序连
    ConnectanXAFApplicationtoaDatabaseProvider(将XAF应用程序连接到数据库提供程序)Whenanapplicationrunsforthefirsttime,itsdatabaseiscreatedautomatically.Duringthefollowingrunsinadebugmode,theapplicationconnectstothesamedata......
  • 开启防火墙后,无法连接服务
    一、电脑开启防火墙后需要对某些服务开放时,就需要设置出站、入站规则二、出站、入站规则配置1.高级设置2.配置入站规则3.新增入站规则4.配置开放的端口5.连接方式6.设置入站名称三、同步需要配置出站规则,否则光能进来,但却出不去1.新建出站规则2.后面跟新建入站......
  • mysql INNER JOIN、LEFT JOIN、RIGHT JOIN;内连接(等值连接)、左连接、右连接
    文档:https://www.runoob.com/mysql/mysql-join.html之前的分页优化写法(推荐使用INNERJOIN)selectt1.orderId,t1.venderId,t1.created,t1.modified,t1.pushCreated,t1.pushModified,t1.responseJsonfromyd_pop_ordert1,(selectorderIdfromyd_......