Softmax层和全连接层
Softmax层和全连接层在深度学习模型中通常是紧密相关的,经常一起使用。
全连接层(也称为线性层或密集连接层)是深度学习模型中常见的层之一,它将输入张量与权重矩阵相乘,并添加偏置项,然后应用激活函数。全连接层的输出通常被称为“logits”,它是模型对不同类别的预测结果。
在多类别分类任务中,全连接层的输出需要经过Softmax层来转换为概率分布。Softmax层接收全连接层的输出作为输入,并将其转化为每个类别的概率值。这样,模型就可以输出每个类别的预测概率。
通常的模型结构是:全连接层的输出作为Softmax层的输入,Softmax层的输出作为模型的最终预测结果。这种结构可以使模型输出每个类别的概率,并用于计算损失函数、进行预测和评估模型性能。
在训练过程中,Softmax层的输出通常与真实标签进行比较,以计算交叉熵损失(Cross-Entropy Loss)。然后,通过反向传播算法,模型的参数可以根据损失进行更新,以优化模型的性能。
因此,全连接层和Softmax层通常一起使用,全连接层提供了模型的原始输出(logits),而Softmax层将其转换为概率分布,使模型可以输出每个类别的预测概率,并进行训练和预测。
全连接层nn.Linear()
nn.Linear
是 PyTorch 中表示全连接层的类。全连接层也被称为线性层或密集连接层,它将输入数据的每个元素与权重相乘,并加上偏置,然后将结果传递给激活函数(可选)。nn.Linear
类提供了一个简单的接口来定义全连接层,并自动管理权重和偏置的初始化。
import torch
import torch.nn as nn
m = nn.Linear(20, 30)
input = torch.randn(128, 20)
output = m(input)
print(output.size())
这段代码创建了一个具有输入维度为 20 和输出维度为 30 的全连接层 m
。然后,使用大小为 (128, 20) 的随机输入张量 input
,将其传递给全连接层 m
。最后,打印输出张量 output
的大小。根据输入的大小 (128, 20) 和全连接层的输出维度为 30,输出张量的大小应为 (128, 30)。
全连接层之前的数据
全连接层之前的数据通常被称为特征向量(feature vector)或特征表示(feature representation),而不是特征图。特征图(feature map)通常指的是卷积神经网络中的中间输出,它是由卷积层生成的二维或三维数组。在卷积神经网络中,卷积层提取输入数据的特征,并生成特征图。然后,这些特征图会被展平并输入到全连接层,全连接层之前的数据就是特征向量或特征表示。全连接层将特征向量映射到最终的输出类别或标签上,输出的结果称为logits。