当前位置:   article > 正文

理论学习:全连接层和Softmax层

softmax层

全连接层和Softmax层

        Softmax层和全连接层在深度学习模型中通常是紧密相关的,经常一起使用。

        全连接层(也称为线性层或密集连接层)是深度学习模型中常见的层之一,它将输入张量与权重矩阵相乘,并添加偏置项,然后应用激活函数。全连接层的输出通常被称为“logits”,它是模型对不同类别的预测结果。

            

        在多类别分类任务中,全连接层的输出需要经过Softmax层来转换为概率分布。Softmax层接收全连接层的输出作为输入,并将其转化为每个类别的概率值。这样,模型就可以输出每个类别的预测概率。

        通常的模型结构是:全连接层的输出作为Softmax层的输入,Softmax层的输出作为模型的最终预测结果。这种结构可以使模型输出每个类别的概率,并用于计算损失函数、进行预测和评估模型性能。

        在训练过程中,Softmax层的输出通常与真实标签进行比较,以计算交叉熵损失(Cross-Entropy Loss)。然后,通过反向传播算法,模型的参数可以根据损失进行更新,以优化模型的性能。

        因此,全连接层和Softmax层通常一起使用,全连接层提供了模型的原始输出(logits),而Softmax层将其转换为概率分布,使模型可以输出每个类别的预测概率,并进行训练和预测。

全连接层

全连接层nn.Linear()

   nn.Linear 是 PyTorch 中表示全连接层的类。全连接层也被称为线性层或密集连接层,它将输入数据的每个元素与权重相乘,并加上偏置,然后将结果传递给激活函数(可选)。nn.Linear 类提供了一个简单的接口来定义全连接层,并自动管理权重和偏置的初始化。

  1. import torch
  2. import torch.nn as nn
  3. m = nn.Linear(20, 30)
  4. input = torch.randn(128, 20)
  5. output = m(input)
  6. print(output.size())

        这段代码创建了一个具有输入维度为 20 和输出维度为 30 的全连接层 m。然后,使用大小为 (128, 20) 的随机输入张量 input,将其传递给全连接层 m。最后,打印输出张量 output 的大小。根据输入的大小 (128, 20) 和全连接层的输出维度为 30,输出张量的大小应为 (128, 30)。

全连接层的计算

全连接层之前的数据

        全连接层之前的数据通常被称为特征向量(feature vector)或特征表示(feature representation),而不是特征图。特征图(feature map)通常指的是卷积神经网络中的中间输出,它是由卷积层生成的二维或三维数组。在卷积神经网络中,卷积层提取输入数据的特征,并生成特征图。然后,这些特征图会被展平并输入到全连接层,全连接层之前的数据就是特征向量或特征表示。全连接层将特征向量映射到最终的输出类别或标签上,输出的结果称为logits。

"concatenated with '1'”

Vector hb contains the activations of the penultimate layer concatenated with “1” accounting for the bias.

这句话描述的是在神经网络中处理全连接层(通常用于分类任务末端)时的一种常见技术,即在特征向量(即激活向量)中加入一个额外的值(通常是1),以便与权重矩阵中的偏置项(bias)一起进行计算。这样做的目的是在不改变网络其他部分的情况下,方便地处理偏置项。

解析这句话的各个部分:

如何工作的

自动包含了偏置项的加和,无需在代码中单独为每个神经元添加偏置。

这种技术使得模型的实现更为简洁,且便于使用矩阵运算库进行高效计算。通过这种方式,可以保持网络结构的整洁和计算的统一性,同时也利用了现代计算库对矩阵运算的优化。

Softmax

Softmax计算损失

Softmax 函数是一个在多类分类问题中常用的激活函数,它将一组原始的逻辑值(logits)转换成概率分布。每个逻辑值代表模型对应类别的原始预测数值,而softmax函数的作用是将这些原始预测数值“压缩”成为一个真实的概率分布。

softmax层算不算神经网络的最后一层?

是否将softmax层视为神经网络的最后一层,这取决于网络的特定用途和上下文。在多类分类任务中,softmax层通常被视为网络的最后一层,因为它将网络输出的逻辑值(logits)转换成概率分布,这些概率直接对应于每个类别的预测概率。下面是详细解释:

在分类任务中的角色

在多类分类任务中,如图像分类、文本分类等,softmax层经常用于网络的输出层:

  • 输出解释:Softmax层的输出是一个概率分布,显示了每个类别作为输入样本类别的概率。这使得模型的输出更易于解释。
  • 决策依据:分类决策通常基于softmax输出的最高概率,即模型预测输入最可能属于的类别。

在神经网络架构中的位置

  • 作为最终层:在绝大多数用于分类的神经网络架构中,如卷积神经网络(CNN)用于图像分类或循环神经网络(RNN)用于文本分类时,softmax层位于网络的末端。在这些情况下,它确实是网络的最后一层。
  • 与损失函数的关系:在训练阶段,softmax层经常与交叉熵损失函数结合使用,这种组合非常有效地处理分类问题中的概率输出。某些框架(如TensorFlow和PyTorch)提供了一个结合了softmax和交叉熵的单一操作(如softmax_cross_entropy_with_logits),这在技术上将softmax的执行融入到损失计算中,从而在实现上可能不将softmax明显表示为一个单独的“层”。

在其他情况下

尽管在分类任务中softmax常常是最后一层,但在某些神经网络设计中,可能还会在softmax层之后添加其他层。例如,在一些复杂的网络架构中,可能会有后处理层,用于进一步处理softmax的输出。此外,在模型融合或某些特定的神经网络设计中,softmax的输出可能被送入另一个模型或网络层进行更深层次的处理或决策。

结论

总的来说,如果网络的目的是对输入数据进行分类,并且直接基于softmax的输出做出决策,那么可以将softmax层视为网络的最后一层。但在更复杂或非标准的神经网络设计中,softmax层可能不是最后一层,具体取决于整个模型的架构和用途。

激活函数

激活函数在神经网络中的位置通常是在线性层(也称为全连接层)之后。线性层将输入数据进行线性变换,即计算输入与权重的乘积,并加上偏置项。然而,仅使用线性层会限制网络的表示能力,因为多个线性层的组合仍然只能表示线性关系。

为了引入非线性性质和更强大的表示能力,激活函数被应用在线性层的输出上。激活函数将线性层的输出进行非线性变换,引入非线性关系,从而使网络能够学习更复杂的模式和特征。

激活函数可以将线性层的输出映射到一个特定的范围,并引入非线性变换,例如将负值转换为零或将输出限制在特定的范围内。常见的激活函数包括Sigmoid、ReLU(Rectified Linear Unit)、Tanh等。

激活函数的引入使得神经网络能够学习非线性映射,从而更好地适应复杂的数据分布和任务。通过非线性激活函数的堆叠,神经网络可以逐渐学习到更复杂的特征和表示,提高网络的表达能力和性能。

因此,激活函数在神经网络中起到了关键的作用,它们与线性层相互配合,共同构成了神经网络的基本组成部分。

ReLU和softmax的区别

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/1005713
推荐阅读
相关标签
  

闽ICP备14008679号