如何在 Pytorch(预训练)中修改 resnet 50 以提供多标签分类的多个输出

数据挖掘 美国有线电视新闻网 火炬 迁移学习
2022-03-05 21:12:35
class ResNet(nn.Module):
def __init__(self):
    super(ResNet, self).__init__()
    resnet = models.resnet50(pretrained=True)
    modules = list(resnet.children())[:-1]
    self.resnet = nn.Sequential(*modules)
    self.fc=nn.Linear(2048,10)

def forward(self, x):

    x1 = self.resnet(x)  
    x1=self.resnet(x)
    x1 = x1.view(x1.size(0), -1)  
    x1=self.fc(x1)

    x2 = self.resnet(x) 
    x2= x2.view(x2.size(0), -1)
    x2=self.fc(x2)


    return x1,x2
1个回答

softmax 层有助于:

类 ResNet(nn.Module): def init (self): super(ResNet, self)。init () resnet = models.resnet50(pretrained=True) modules = list(resnet.children())[:-1] self.resnet = nn.Sequential(*modules) self.fc=nn.Linear(2048,10 ),

def 前向(自我,x):

x1 = torch.softmax(self.resnet(x), dim=-1)
#x1=self.resnet(x)
#x1 = x1.view(x1.size(0), -1)  
#x1=self.fc(x1)

x2 = torch.softmax(self.resnet(x) dim=-1)
#x2= x2.view(x2.size(0), -1)
#x2=self.fc(x2)

return x1,x2

要了解有关 dim 属性的更多信息,请参考此处:https ://stackoverflow.com/questions/52513802/pytorch-softmax-with-dim

我希望这就是你要找的。