全连接层那些事(Fully Connected Layer)

简介: 全连接层那些事(Fully Connected Layer)

什么是全连接层?

       全连接层(Fully Connected Layer),也称为密集连接层(Dense Layer),是深度学习神经网络中的一种基本层类型。全连接层的每个神经元都与前一层的所有神经元相连接,每个连接都有一个权重用于调节信息传递的强度,并且每个神经元还有一个偏置项。


哪里会用到全连接层

       全连接层通常出现在卷积神经网络(CNN)或多层感知器(MLP)等网络结构的末尾。它负责将前面层中提取到的特征映射转换为最终的输出。在分类任务中,全连接层的输出通常与类别数量相对应,用于输出每个类别的概率分布或类别得分。

全连接层的作用包括:

  • 特征整合: 将前面层提取到的特征整合到最终的表示中,以便进行分类、回归或其他任务。
  • 非线性映射: 全连接层通常会在特征整合后应用非线性激活函数,如ReLU、sigmoid或tanh,以增加网络的表达能力。
  • 参数调节: 全连接层的权重和偏置项是可以学习的参数,通过反向传播算法进行优化,以使网络能够更好地拟合训练数据。
  • 输出预测: 在分类任务中,全连接层的输出用于预测输入属于各个类别的概率分布,或者直接输出类别得分。

      全连接层的引入使得神经网络能够对前面层提取到的特征进行更复杂的整合和转换,从而提高了模型的表达能力和性能。

示例代码

import numpy as np
 
class FullyConnectedLayer:
    def __init__(self, input_size, output_size):
        self.input_size = input_size
        self.output_size = output_size
        # 随机初始化权重和偏置
        self.weights = np.random.randn(input_size, output_size)
        self.biases = np.random.randn(output_size)
 
    def forward(self, input_data):
        # 计算全连接层的前向传播
        return np.dot(input_data, self.weights) + self.biases
 
# 测试全连接层
if __name__ == "__main__":
    # 创建输入数据
    input_data = np.random.randn(2, 3)  # 输入大小为2,样本数为3
 
    # 创建全连接层对象,输入大小为3,输出大小为4
    fc_layer = FullyConnectedLayer(input_size=3, output_size=4)
 
    # 进行前向传播
    output_data = fc_layer.forward(input_data)
 
    # 输出全连接层的输出
    print("全连接层的输出:")
    print(output_data)

Dropout 层的作用

       Dropout 层可以在全连接层中起到正则化的作用,从而优化全连接层的性能。全连接层的参数量较大,容易产生过拟合现象,而 Dropout 层通过随机失活部分神经元的输出,减少神经元之间的相关性,降低模型对于某些特定神经元的依赖性,提高模型的泛化能力,减少过拟合风险。如图所示,是在全连接层网络中加入了 Dropout 层之后的效果。

示例代码:

 

import numpy as np
 
class DropoutLayer:
    def __init__(self, dropout_rate):
        self.dropout_rate = dropout_rate
        self.mask = None
 
    def forward(self, input_data, training=True):
        if training:
            # 训练模式下,生成 dropout 掩码
            self.mask = (np.random.rand(*input_data.shape) >= self.dropout_rate) / (1.0 - self.dropout_rate)
            # 应用 dropout 掩码
            output_data = input_data * self.mask
        else:
            # 测试模式下,不应用 dropout,直接返回输入数据
            output_data = input_data
        return output_data
 
# 测试 Dropout 层
if __name__ == "__main__":
    # 创建输入数据
    input_data = np.random.randn(2, 3)  # 输入大小为2,样本数为3
 
    # 创建 Dropout 层对象,设置 dropout 比率为0.2
    dropout_layer = DropoutLayer(dropout_rate=0.2)
 
    # 进行前向传播,训练模式
    output_data_train = dropout_layer.forward(input_data, training=True)
 
    # 进行前向传播,测试模式
    output_data_test = dropout_layer.forward(input_data, training=False)
 
    # 输出结果
    print("训练模式下的输出:")
    print(output_data_train)
    print("\n测试模式下的输出:")
    print(output_data_test)
相关文章
|
机器学习/深度学习 人工智能 自然语言处理
视觉 注意力机制——通道注意力、空间注意力、自注意力
本文介绍注意力机制的概念和基本原理,并站在计算机视觉CV角度,进一步介绍通道注意力、空间注意力、混合注意力、自注意力等。
16610 58
|
机器学习/深度学习 人工智能 数据可视化
ShuffleNet:极致轻量化卷积神经网络(分组卷积+通道重排)
我们引入了一个高效计算的CNN结构名字叫做shuffleNet,这个结构被设计用来解决部署算力非常有限的移动设备问题,这个新的结构使用了两个新的操作,pointwise group convolution 和 channel shuffle能够在极大减少计算量的同时保持一定的精度。我们在ImageNet classification和MS COCO目标检测数据集上做实验论证了ShuffleNet和其他的结构相比有着很好的性能。比如,相比于mobilenet,shufflenet在ImageNet 分类任务上有着更低的top-1错误率(错误率是7.8%)需要的计算量为40MFLOPs。在一个AR
4335 0
ShuffleNet:极致轻量化卷积神经网络(分组卷积+通道重排)
|
机器学习/深度学习 自然语言处理 算法
《深度解析:全连接层—卷积神经网络中的关键纽带》
全连接层在卷积神经网络(CNN)中起着桥梁作用,将卷积层和池化层提取的局部特征整合为全局特征,实现分类或回归任务。每个神经元与前一层所有神经元相连,通过权重和偏置进行特征转换,并引入激活函数以增强非线性建模能力。尽管参数量大易导致过拟合,但可通过正则化、Dropout和批标准化等技术有效应对,从而提升模型性能。
1721 8
|
机器学习/深度学习 自然语言处理 数据可视化
22_注意力机制详解:从基础到2025年最新进展
在深度学习的发展历程中,注意力机制(Attention Mechanism)扮演着越来越重要的角色,特别是在自然语言处理(NLP)、计算机视觉(CV)和语音识别等领域。注意力机制的核心思想是模拟人类视觉系统的聚焦能力,让模型能够在处理复杂数据时,选择性地关注输入的不同部分,从而提高模型的性能和可解释性。
2014 0
|
机器学习/深度学习 自然语言处理 PyTorch
深入剖析Transformer架构中的多头注意力机制
多头注意力机制(Multi-Head Attention)是Transformer模型中的核心组件,通过并行运行多个独立的注意力机制,捕捉输入序列中不同子空间的语义关联。每个“头”独立处理Query、Key和Value矩阵,经过缩放点积注意力运算后,所有头的输出被拼接并通过线性层融合,最终生成更全面的表示。多头注意力不仅增强了模型对复杂依赖关系的理解,还在自然语言处理任务如机器翻译和阅读理解中表现出色。通过多头自注意力机制,模型在同一序列内部进行多角度的注意力计算,进一步提升了表达能力和泛化性能。
11451 48
|
机器学习/深度学习 资源调度 自然语言处理
长短时记忆网络(LSTM)完整实战:从理论到PyTorch实战演示
长短时记忆网络(LSTM)完整实战:从理论到PyTorch实战演示
21413 0
|
机器学习/深度学习 资源调度 算法
图卷积网络入门:数学基础与架构设计
本文系统地阐述了图卷积网络的架构原理。通过简化数学表述并聚焦于矩阵运算的核心概念,详细解析了GCN的工作机制。
1437 3
图卷积网络入门:数学基础与架构设计
|
计算机视觉
YOLOv11改进策略【损失函数篇】| Shape-IoU:考虑边界框形状和尺度的更精确度量
YOLOv11改进策略【损失函数篇】| Shape-IoU:考虑边界框形状和尺度的更精确度量
1909 4
|
机器学习/深度学习 测试技术 PyTorch
轻量级网络——MobileNetV3
轻量级网络——MobileNetV3
3451 0
轻量级网络——MobileNetV3
|
机器学习/深度学习 计算机视觉
CNN全连接层是什么东东?
CNN全连接层是什么东东?
1425 4