PyTorch深度学习入门记录8
线性层(全连接层)
线性层(Linear Layer),也称为全连接层(Fully Connected Layer),是神经网络中最基础的组件之一,主要作用是对输入数据进行线性变换,实现特征的线性组合与维度转换。
计算如下:
output = input × weight + bias
核心作用:
-
特征维度转换
将输入特征从in_features
维度映射到out_features
维度,实现数据维度的升维或降维。
例如:将 CIFAR10 图像展平后的 196608 维特征,通过nn.Linear(196608, 10)
转换为 10 维(对应 10 个类别)。 -
特征线性组合
通过权重矩阵对输入特征进行加权求和,结合偏置项,学习输入特征与输出目标之间的线性关系。
(注:线性层本身是 “线性” 的,通常需要配合激活函数引入非线性,才能拟合复杂数据分布。) -
学习数据模式
在训练过程中,线性层通过反向传播不断调整weight
和bias
,使输出尽可能接近目标值(如分类任务中的类别标签),从而学习到输入数据中的关键模式。
# 导入PyTorch核心库,用于张量操作和神经网络基础功能
import torch# 导入torchvision的datasets模块,用于加载预设图像数据集
import torchvision.datasets# 从torch中导入nn模块,包含构建神经网络的基础组件
from torch import nn# 从nn模块中导入线性层(全连接层)
from torch.nn import Linear# 从torch.utils.data导入DataLoader,用于批量加载数据集并支持并行处理
from torch.utils.data import DataLoader# 加载CIFAR10测试数据集
# CIFAR10是一个包含10个类别的彩色图像数据集,每张图像大小为32x32
dataset = torchvision.datasets.CIFAR10("./official_dataset", # 数据集保存到本地的路径train=False, # 设置为False表示加载测试集,True则加载训练集download=False, # 设置为False表示不自动下载(假设已提前下载)transform=torchvision.transforms.