全连接层(线性层Linear Layers)搭建(Fully Connected Layer)
其作用及在神经网络中的最后一层中,具体是如何工作的,后面再详细解释
1)作用
- 特征提取:在卷积神经网络(CNN)中,线性层通常用于提取卷积层输出的高级特征,并将其映射到分类或回归任务所需的输出空间。
- 分类任务:在图像分类、文本分类等任务中,线性层通常作为网络的最后一层,用于输出每个类别的得分或概率。
- 回归任务:在回归任务中,线性层可以输出连续值的预测结果。
torch.nn.Linear(in_features, out_features, bias=True, device=None, dtype=None)
可以简单看成,in_features
指的是输入矩阵的列数(表示横向组合的每个向量的元素个数,即维度),out_features
指的是输出矩阵的列数。
线性层的线性变换是通过矩阵乘法和加上偏置来实现的,其数学表达式通常为:y = Wx + b
,W
的维度会根据 x
和 y
变化。其中:
- y: 是输出向量。
- W(weight): 是权重矩阵,其中的每个元素都是可学习的参数。会按照公式初始化
- x: 是输入向量。
- b(bias): 是偏置向量,也是一个可学习的参数。会按照公式初始化。
2)示例:
import torch
from torch import nn
import torchvision
from torchvision import transforms
from torch.utils.data import DataLoader
dataclass_transform = transforms.Compose([
transforms.ToTensor()