续用「搭积木盖房子」的比喻,这次重点讲「怎么挑积木」和「怎么搭房子」,保证零基础也能懂~
| 积木名称(PyTorch 层) | 白话功能描述 | 常见用途举例 |
nn.Linear(全连接层) |
把输入数字全部「串起来」做线性变换,像「数字加工厂」,输入多少数就输出多少数。 |
最后分类层(比如输出 10 个类别概率)、简单数据变换。 |
nn.Conv2d(卷积层) |
像「局部扫描仪」,只扫描输入数据的一小块(比如图像的一个区域),提取局部特征(比如边缘、颜色)。 |
处理图像、视频(识别物体轮廓)。 |
nn.MaxPool2d(池化层) |
像「数据压缩器」,把大块数据缩小成小块,扔掉不重要的细节,保留关键信息。 |
减少数据量,防止过拟合(比如把 28×28 图像缩成 14×14)。 |
nn.ReLU(激活函数) |
像「信号开关」,把负数信号变成 0(关掉),正数信号保留(打开),让模型能学复杂逻辑。 |
几乎每个隐藏层后面都要加,不然模型只能学线性关系。 |
nn.Dropout(丢弃层) |
像「防作弊器」,训练时随机扔掉一些神经元的信号,防止模型死记硬背训练数据。 |
防止过拟合(比如考试时突然遮住部分题目,看模型真的懂没)。 |
nn.BatchNorm2d(批归一化层) |
像「数据净化器」,把数据规整到统一范围,让模型训练更稳定。 |
加速训练收敛,比如把像素值从杂乱范围规整到接近 0-1。 |
输入图像(比如224×224×3) → 卷积层 → 激活函数 → 池化层 → (重复几次) → 全连接层 → 输出结果
- 类比盖房子:
- 门口安检(卷积 + 激活):先扫描图像局部(卷积),提取边缘、颜色等「基础特征」,再用激活函数过滤无效信号(比如只保留明显的边缘)。
- 压缩存储(池化):把图像缩小,只保留关键特征(比如把 224×224 像素缩成 112×112,但关键轮廓还在)。
- 多次加工(多层卷积 + 池化):像组装零件,先认出门框、窗户(低级特征),再认出门、房子(高级特征)。
- 最终决策(全连接):把所有特征汇总,判断这是「猫」还是「狗」(输出分类结果)。
假设输入是一张 3 通道、28×28 像素的图像:
输入形状:[batch_size, 3, 28, 28] → batch_size是一次处理的图片数(比如16张)
1. 卷积层:nn.Conv2d(3, 16, kernel_size=3, stride=1)
- 输出形状:[batch_size, 16, 26, 26] → 16个特征图,尺寸缩小2像素(因为卷积核3×3)
2. 池化层:nn.MaxPool2d(2)
- 输出形状:[batch_size, 16, 13, 13] → 尺寸再缩小一半(13=26/2)
3. 全连接层:nn.Linear(16×13×13, 10)
- 先把数据拍扁成一维:16×13×13=2704个数字
- 输出10个数字(对应10个类别概率)
- 关键:前一层的输出形状必须等于后一层的输入形状,就像积木的接口必须匹配,不然搭不起来~
- 积木少:比如「输入层→全连接层→输出层」,中间只加 1 个激活函数。
- 搭建简单:像用 2 块积木搭个小板凳,只能坐人(解决简单问题)。
- 例子:识别黑白数字 0-9,因为数字形状简单,不需要太多层提取特征。
- 积木多且复杂:大量卷积层 + 池化层 + 激活函数 + 全连接层,层层嵌套。
- 搭建讲究:像盖高楼需要设计电梯、水管、电路(比如不同层之间的残差连接、注意力机制)。
- 例子:识别复杂场景中的物体(比如自动驾驶识别行人、汽车、红绿灯),需要多层:
- 前几层:认边缘、颜色(低级特征)
- 中间层:认轮子、车灯(中级特征)
- 后几层:认汽车、行人(高级特征)
- 注意:层多了容易「积木搭歪」(过拟合),需要加 Dropout、BatchNorm 等「加固零件」。
-
看数据类型:
- 图像:多用卷积层 + 池化层(因为图像有局部规律)。
- 文字:多用循环层(RNN)或 Transformer(因为文字有前后顺序)。
- 简单数字:直接全连接层(因为数字之间是线性关系)。
-
看任务难度:
- 简单任务(比如二分类):少用层,避免「杀鸡用牛刀」。
- 复杂任务(比如生成图像):必须多层,不然学不到深层规律。
-
参考经典模型「抄作业」:
- 图像分类:抄 ResNet(多层卷积 + 残差连接)、VGG(堆叠小卷积核)。
- 自然语言处理:抄 BERT(全用 Transformer 层)。
- 就像盖房子参考别人的户型图,新手不用自己设计,改改就行~
- 定义层:选合适的积木(层),告诉模型每个积木的功能(输入输出尺寸、参数)。
- 组合层:按数据处理流程排顺序,让前一层的输出能喂给后一层(接口对齐)。
- 层数选择:任务简单就少搭积木,任务复杂就多搭,但要加「加固零件」防过拟合。
- 终极比喻:网络层就像流水线,数据是原材料,层层加工后变成你要的结果(比如把图像加工成「这是猫」的判断)。