提取CNN模型中间层输出方法

本文介绍了如何在结构中定义了多个nn.Sequential的深度学习模型下,获取内部中间层输出的两种策略。方法一是通过逐层前向执行,自定义函数跳过非操作层并定位目标层;方法二是利用hook函数,注册保存输出的hook,并在预测过程中自动捕获目标层的输出。这两种方法都需要精确识别目标层的索引,以便正确提取所需信息。

前言

针对结构中定义了多个nn.sequential的网络模型,无法直接获取其内部某一中间层的输出,本文将给出两个方法进行解决。
在这里插入图片描述
在这里插入图片描述

方法

1 逐层进行forward

创建自定义函数,实现按照执行顺序逐层前向执行网络模型。
-----将模型输入以及模型作为参数传入函数,返回目标结果

def extract_res(inp, model):
    for index, module in enumerate(model.modules()):  # 按执行顺序遍历网络各层操作
        if index in [0, 1, ...]:  # 去除非操作层
            continue
        inp = module(inp)  # 逐层前向执行,得到结果
        if index == 3:  # 判断是否为目标层  (示例为索引为3的操作)
            return inp

tip: 利用.modules()在进行遍历操作时,其顺序为:
【总网络结构–>各部分–>各部分内部】

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

8倍

谢谢大佬~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值