You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Timm实现神经网络分层冻结/解冻的二分类迁移学习求助

Timm不同模型分层冻结/解冻示例

下面针对Timm中常用的几种模型,给出分层冻结的实现代码,你可以根据任务需求调整冻结的层级范围:

1. ConvNeXt 分层冻结

ConvNeXt的结构分为stem(输入层)、stages(4个特征提取阶段)和head(分类头)。我们可以选择冻结前N个阶段,只训练后面的阶段和分类头:

import timm

convnext = timm.create_model('convnext_tiny_in22k', pretrained=True, num_classes=2)

# 冻结stem和前2个stage
for name, param in convnext.named_parameters():
    if 'stem' in name or 'stages.0' in name or 'stages.1' in name:
        param.requires_grad = False
    else:
        param.requires_grad = True

# 可选:验证冻结状态
# for name, param in convnext.named_parameters():
#     print(f"{name}: {param.requires_grad}")

2. ResNet 分层冻结

ResNet系列包含conv1、bn1、layer1-layer4(特征提取层)和fc(分类头)。可以冻结底层的特征提取层,只训练高层和分类头:

import timm

resnet = timm.create_model('resnet50d', pretrained=True, num_classes=2)

# 冻结conv1、bn1和layer1
for name, param in resnet.named_parameters():
    if 'conv1' in name or 'bn1' in name or 'layer1' in name:
        param.requires_grad = False
    else:
        param.requires_grad = True

3. Vision Transformer (ViT) 分层冻结

ViT的结构包括patch_embed(图像块嵌入层)、pos_embed(位置嵌入)、blocks(Transformer编码器块)和head(分类头)。通常可以冻结嵌入层和前几个编码器块:

import timm

vit = timm.create_model('vit_small_patch16_224', pretrained=True, num_classes=2)

# 冻结patch_embed和前3个transformer blocks
for name, param in vit.named_parameters():
    if 'patch_embed' in name or 'blocks.0' in name or 'blocks.1' in name or 'blocks.2' in name:
        param.requires_grad = False
    else:
        param.requires_grad = True

4. MobileNetV3 分层冻结

MobileNetV3包含stem、bneck(多个瓶颈层)和head。可以冻结输入层和前半部分瓶颈层:

import timm

mobilenet = timm.create_model('mobilenetv3_large_100', pretrained=True, num_classes=2)

# 冻结stem和前5个bneck层
for name, param in mobilenet.named_parameters():
    if 'stem' in name or 'bneck.0' in name or 'bneck.1' in name or 'bneck.2' in name or 'bneck.3' in name or 'bneck.4' in name:
        param.requires_grad = False
    else:
        param.requires_grad = True

通用技巧

  • 可以通过print(model)查看模型的完整结构,明确各层级的命名规则,再针对性设置冻结范围
  • 训练过程中可以逐步解冻:先训练高层和分类头,再解冻底层部分层继续训练,提升模型性能

内容的提问来源于stack exchange,提问作者Beginner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 13:39:37