欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > PyTorch中如何向已有预训练模型新增层

PyTorch中如何向已有预训练模型新增层

2025/4/17 17:24:47 来源:https://blog.csdn.net/byxdaz/article/details/146966865  浏览:    关键词:PyTorch中如何向已有预训练模型新增层

一、分类头查找

        在 PyTorch 的预训练模型(如 ResNetVGGDenseNet 等)中,model.fc 通常表示模型的最后一层全连接层(Fully Connected Layer),也就是分类头(Classifier Head)。它的作用是将提取的特征映射到最终的分类结果上。不同模型的分类头名称可能不同(如 classifier),需通过 print(model) 确认。

1. model.fc 的具体含义

  • fc 是 "Fully Connected" 的缩写,即全连接层。

  • 在分类任务中,这一层的作用是将网络提取的全局特征转换为类别概率分布

  • 例如:

    • ResNet 的 model.fc 默认输出 1000 维(对应 ImageNet 的 1000 类)。

    • 如果改成自己的任务(比如 10 分类),需要替换这一层:

      model.fc = nn.Linear(in_features, 10)  # 改为输出10类

2. 为什么是 model.fc

PyTorch 的预训练模型通常将全连接层命名为 fc,例如:

  • ResNetmodel.fc

  • DenseNetmodel.classifier(注意命名可能不同)

  • VGGmodel.classifier[6](VGG 的全连接层是一个序列,最后一层是分类头)

可以通过打印模型结构确认:

from torchvision.models import resnet50
model = resnet50()
print(model)  # 查看最后一层的名称

3. 如何修改 model.fc

场景1:直接替换分类头(适应新类别数)

import torch.nn as nn
from torchvision.models import resnet50model = resnet50(pretrained=True)
num_ftrs = model.fc.in_features  # 获取输入特征维度(如2048

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词