当前位置: 首页 > news >正文

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 resnet50

model = resnet50(pretrained=True)
num_ftrs = model.fc.in_features  # 获取输入特征维度(如2048
http://www.dtcms.com/a/106935.html

相关文章:

  • Go 语言语法精讲:从 Java 开发者的视角全面掌握
  • 架构设计基础系列:CQRS架构模式
  • 中级:Git面试题全攻略
  • AI提示词:知识探索专家
  • PyQt学习记录
  • python 项目怎么通过docker打包
  • 前端面试题之CSS中的box属性
  • 【Python使用】嘿马云课堂web完整实战项目第1篇:项目概述,项目背景【附代码文档】
  • EasyExcel在Linux上运行正常,在Docker中导出FontConfiguration.getVersion错误(不额外安装fontconfig)
  • 教学管理系统的E-R图
  • go游戏后端开发23:赢三张游戏逻辑
  • C语言内存函数详解
  • mycat--垂直分表--
  • mmaction2教程(2) QA
  • LangChain 使用向量数据库介绍与使用
  • Uniapp 持续出现 Invalid Host/Origin header 解决方法
  • Spring AOP + Redis缓存设计实战:基于注解的优雅三防方案(击穿/穿透/雪崩)
  • 【算法手记9】OR26 最长回文子串 NC369 [NOIP2002 普及组] 过河卒
  • 2024蓝桥杯国赛真题——数位翻转
  • 网络安全防护与挑战
  • 在uniapp中,video比普通的标签层级高解决问题
  • 项目实战--登录页面
  • 运维培训班之最佳选择(The best Choice for Operation and Maintenance Training Courses)
  • CSP-J/S冲奖第22天:时间复杂度
  • 内网服务器centos7安装jdk17
  • SSM-SpringMVC篇
  • 【JavaSE】String 类
  • 基于Rust与WebAssembly实现高性能前端计算
  • 一套AI训推一体化解决方案约等于100万个应用?
  • new/delete到底做了啥?