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上绘制特征。