add_module增加的层不会自己增加forwad, 虽然在print(model)的时候的确会显示已经加入进去了,但是实际处理时并没有对新加入的层进行计算,只有在重写forward函数后才会有你想要的效果
解决:重写类定义时的forward函数,如下所示:
def main():
model = resnet_face18(use_se=False)
model.add_module('metric_fc', nn.Linear(512, 13938, bias=False))
若不修改forward函数,则输出大小为:
b.shape torch.Size([1, 512])
修改forward:
def forward(self, x):
x = self.conv1(x)
x = self.bn1(x)
x = self.prelu(x)
x = self.maxpool(x)
x = self.layer1(x)
x = self.layer2(x)
x = self.layer3(x)
x = self.layer4(x)
x = self.bn4(x)
x = self.dropout(x)
x = x.view(x.size(0), -1)
x = self.fc5(x)
x = self.bn5(x)
x = self.metric_fc(x) # 原来是没有加这个的
return x
现在输出大小为:
b.shape torch.Size([1, 13938])



