While implementing a model from scratch I had no trouble with setting multiple outputs(2 in my case and backpropagating the combined loss) . The last fully connected layer has 10 neurons and I need to have two multiple outputs of 10 neurons. This is my code.
class LeNet(nn.Module): def __init__(self): super(LeNet,self).__init__() self.cnn_model=nn.Sequential(nn.Conv2d(1,6,5), nn.ReLU(), nn.AvgPool2d(2,stride=2), nn.Conv2d(6,16,5), nn.ReLU(), nn.AvgPool2d(2,stride=2)) self.fc_model=nn.Sequential( nn.Linear(400,120), nn.LeakyReLU(), nn.Linear(120,84), nn.LeakyReLU(), nn.Linear(84,10)) def forward(self,x): x1=self.cnn_model(x) x1=x1.view(x1.size(0),-1) x1=self.fc_model(x1) x2=self.cnn_model(x) x2=x2.view(x2.size(0),-1) x2=self.fc_model(x2) return x1,x2
My question is how should I change any existing architecture like resnet18,vgg16 to have multiple outputs.(Note that the number of classes are 10).Kindly provide code snippets.