明明变量说明 num_ftrs
在 PyTorch 深度学习模型中,num_ftrs 是一个常用的变量命名,它是 "number of features"(特征数量)的缩写。
这个变量通常出现在以下场景中:
主要用途
在迁移学习场景中最常见,特别是当你使用预训练模型(如 ResNet、VGG、AlexNet 等)并修改最后的分类层时:
python
import torch.nn as nn
import torchvision.models as models
# 加载预训练模型
model = models.resnet18(pretrained=True)
# 获取全连接层的输入特征数
num_ftrs = model.fc.in_features # 例如 ResNet18 中为 512
# 替换最后的分类层
model.fc = nn.Linear(num_ftrs, num_classes) # num_classes 是你的新类别数
为什么需要它?
- 预训练模型的最后分类层通常是针对原始数据集(如 ImageNet 的 1000 类)设计的
- 当你进行迁移学习时,需要将最后的分类层替换为适合你任务的输出大小
num_ftrs保存了前一层输出的特征数量,作为新分类层的输入维度
其他常见场景
- 在特征提取器中表示提取的特征向量维度
- 在自定义网络架构中表示某层的输出特征数
- 在连接不同模块时作为维度参数
这是一种命名约定,帮助开发者清晰地表达"这里是一个特征数量的参数",而不是使用更模糊的变量名如
n或size。