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

如何查找torchvision预训练模型的层名称,获取Deeplabv3 resnet50最终ReLU层

针对Deeplabv3 ResNet50获取目标ReLU层名称的解决方案

方法1:遍历输出所有ReLU层名称(通用所有模型)

运行如下代码可直接输出模型中所有ReLU层的完整路径名称,最后一个输出项即为最终ReLU层:

import torch
import torchvision
from torchvision.models.segmentation import deeplabv3_resnet50

# 加载预训练模型
model = deeplabv3_resnet50(pretrained=True)
model.eval()

# 遍历打印所有ReLU层的名称
for name, module in model.named_modules():
    if isinstance(module, torch.nn.ReLU):
        print(f"ReLU层名称:{name}")

你也可以修改代码中的判断条件,搜索其他类型的层。

方法2:直接使用官方预训练模型的默认层名

标准torchvision实现的Deeplabv3 ResNet50,常用的两个目标ReLU层名称如下:

  • 大部分语义分割GradCAM场景使用的backbone输出端最后一个ReLU层:名称为 backbone.layer4.2.relu
  • 分割头输出前的classifier模块内最后一个ReLU层:名称为 classifier.3

以下是Captum调用的示例代码:

from captum.attr import LayerGradCam

# 两种获取目标层的方式二选一
# 方式1:直接通过属性获取
target_layer = model.backbone.layer4[2].relu
# 方式2:通过层名字符串获取
target_layer = model.get_submodule("backbone.layer4.2.relu")

# 初始化GradCAM
grad_cam = LayerGradCam(model, target_layer)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:54:02