Python 属性错误:‘;非类型’;对象没有属性‘;寄存器(U向前)(U挂钩#x2019);

Python 属性错误:‘;非类型’;对象没有属性‘;寄存器(U向前)(U挂钩#x2019);,python,python-3.x,pytorch,Python,Python 3.x,Pytorch,我正在尝试将前向钩子函数注册到网络的最后一个conv层。我首先通过以下方式打印出模块名称: for name, _ in model.named_modules(): print(name) 这给了我“0.conv”作为模块名。但是,当我尝试执行以下操作时,第4行触发了上述错误: def hook_feature(module, in_, out_): features.append(out_.cpu().data.numpy()) model._modules.get("0

我正在尝试将前向钩子函数注册到网络的最后一个conv层。我首先通过以下方式打印出模块名称:

for name, _ in model.named_modules():
    print(name)
这给了我“0.conv”作为模块名。但是,当我尝试执行以下操作时,第4行触发了上述错误:

def hook_feature(module, in_, out_):
    features.append(out_.cpu().data.numpy())

model._modules.get("0.conv").register_forward_hook(hook_feature)
这是我的
命名模块()
输出:

...
0.decoder1.dec1conv2
0.decoder1.dec1norm2
0.decoder1.dec1relu2
0.conv
1
1.outc1
1.outc2

我做错了什么?我如何修复它?谢谢

您的模块以分层方式存储。要访问
'0.conv'
,您需要

模型。_模块[“0”]。_模块。获取(“conv”)。注册\u向前\u挂钩(挂钩功能)

试试
model.\u模块[0]。获取('conv')
非常感谢,您非常接近!这帮助我了解了
模型。_模块[“0”]。_模块。获取(“conv”)。注册\u转发\u钩子(钩子功能)