前言
针对结构中定义了多个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()在进行遍历操作时,其顺序为:
【总网络结构–>各部分–>各部分内部】

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





