Python 如何在钩子函数中检索层的名称?

Python 如何在钩子函数中检索层的名称?,python,pytorch,Python,Pytorch,我有一个神经网络 class ConvNet(nn.Module): def __init__(self): super().__init__() self.trunk = nn.ModuleList() self.trunk.add_module('conv1', nn.Conv2d(3, 10, 3)) self.classifier = nn.Linear(30, 2) def forward(self, x): out = self.cl

我有一个神经网络

class ConvNet(nn.Module):
  def __init__(self):
    super().__init__()
    self.trunk = nn.ModuleList()
    self.trunk.add_module('conv1', nn.Conv2d(3, 10, 3))

    self.classifier = nn.Linear(30, 2)
  def forward(self, x):
    out = self.classifier(self.trunk.conv1(x))
    return out

model = ConvNet()
我注册了前钩

def hook(module, input, output):
    print(module, input[0].shape, output.shape)

x =  model.trunk.conv1.register_forward_hook(hook)

如何检索钩子函数中的“conv1”层的名称,
模块。\u get\u name
返回
Conv2d
模块。\uu class\uu
返回
,如何只获取“conv1”?

请问您的最终目标是什么?对于您想要做的事情,可能有/应该有更简单的方法,因为这些信息似乎已经存在于您的代码中,但您正在从一个陌生的角度接近它。也许你想让钩子只在特定的层和特定的名称上执行?我有多个神经网络,想在tensorboard上绘制特征。请问你的最终目标是什么?对于您想要做的事情,可能有/应该有更简单的方法,因为这些信息似乎已经存在于您的代码中,但您正在从一个陌生的角度接近它。也许你想让钩子只在具有特定名称的特定层上执行?我有多个神经网络,想在tensorboard上绘制特征。