
在 PyTorch 里nn.Linear是最常见的层之一。它也叫全连接层。很多入门模型、分类器、回归模型都会用到它。如果你能理解 Linear 层很多神经网络结构都会变得更容易读。Linear 层做了什么Linear 层本质上做的是一次线性变换输出 输入 * 权重 偏置在 PyTorch 里可以这样写from torch import nn layer nn.Linear(in_features4, out_features2)这表示输入有 4 个特征输出有 2 个特征。in_features 和 out_features理解 Linear 层最重要的是理解这两个参数in_features每个样本输入特征的数量out_features每个样本输出特征的数量比如一个样本有 4 个数[身高, 体重, 年龄, 运动频率]如果我们想把它映射成 2 个输出就可以用nn.Linear(4, 2)。输入 shape 应该是什么Linear 层最常见的输入形状是[batch_size, in_features]比如import torch from torch import nn x torch.randn(32, 4) layer nn.Linear(4, 2) y layer(x) print(y.shape)输出就是torch.Size([32, 2])这里 32 个样本被一起送进模型每个样本从 4 个特征变成 2 个输出。Linear 层有参数吗有。Linear 层内部会自动创建权重和偏置。你可以这样看print(layer.weight.shape) print(layer.bias.shape)对于nn.Linear(4, 2)权重形状通常是[2, 4]偏置形状是[2]。这些参数会在训练过程中被优化器更新。为什么它叫全连接因为输入的每一个特征都会连接到输出的每一个神经元。如果输入有 4 个特征输出有 2 个神经元那么每个输出都会看到全部 4 个输入。这就是“全连接”的意思。小结Linear 层是神经网络里最基础的计算模块之一。它做的是从一个特征空间到另一个特征空间的线性映射。刚开始学 PyTorch 时先把in_features、out_features和输入 shape 搞清楚就已经解决了一大半困惑。技术图把关键链路画清楚可运行实验手算一次 Linear 层输出nn.Linear执行的是yxWᵀb。手动设置权重和偏置后可以逐项核对框架输出。import torch from torch import nn layer nn.Linear(2, 1) with torch.no_grad(): layer.weight.copy_(torch.tensor([[2.0, -1.0]])) layer.bias.copy_(torch.tensor([0.5])) x torch.tensor([[3.0, 4.0], [1.0, -2.0]]) print(输出:, layer(x).squeeze(1).tolist()) print(参数 shape:, tuple(layer.weight.shape), tuple(layer.bias.shape))运行结果输出: [2.5, 4.5] 参数 shape: (1, 2) (1,)第一个样本结果是3×2 4×(-1) 0.5 2.5。权重 shape 按[out_features, in_features]保存。常见误区in_features包含 batch size。它只表示每个样本最后一维的特征数。Linear 层本身能拟合任意非线性关系。多层 Linear 之间没有激活函数时仍等价于一次线性变换。动手练习把输出维度改为 2自行设置一个2×2权重矩阵并手算两个输出。本文首发于「去你想去的地方」 PyTorch 的 Linear 层详解全连接层到底做了什么 | 去你想去的地方完整学习路线、视频版和后续更新请访问原文。