Hi @ptrblck sir
I am using a bit similar concept , found this question relevant so did not raise  another one. I am trying  to train to separate models using convolutional autoencoders and then will use both the encoded outputs for final classification, There is a paper on this concept. one of My model is this

     
        
        
class CNN1D(torch.nn.Module):
     def __init__(self, num_classes=7):
        super(CNN1D, self).__init__()     
        self.cn1=nn.Conv1d(1,32,5,1)
        self.mp1=nn.MaxPool1d(4,return_indices=True)
        self.cn2=nn.Conv1d(32,32,5,1)
        self.mp2=nn.MaxPool1d(4,return_indices=True)
        self.cn3=nn.Conv1d(32,64,5,1)
        self.mp3=nn.MaxPool1d(4,return_indices=True)
        self.cn4=nn.Conv1d(64,64,5,1)
        self.mp4=nn.MaxPool1d(2,return_indices=True)
        self.cn5=nn.Conv1d(64,128,5,1)
        self.mp5=nn.MaxPool1d(2,return_indices=True)
        self.cn6=nn.Conv1d(128,128,5,1)
        self.mp6=nn.MaxPool1d(2,return_indices=True)
        self.relu=nn.ReLU()
        
        
        self.cnt1=nn.ConvTranspose1d(128,128,5,1)
        self.mt1=nn.MaxUnpool1d(2)
        self.cnt2=nn.ConvTranspose1d(128,64,5,1)
        self.mt2=nn.MaxUnpool1d(2)  
        self.cnt3=nn.ConvTranspose1d(64,64,5,1)
        self.mt3=nn.MaxUnpool1d(2)
        self.cnt4=nn.ConvTranspose1d(64,32,5,1)
        self.mt4=nn.MaxUnpool1d(4)
        self.cnt4=nn.ConvTranspose1d(32,32,5,1)
        self.mt5=nn.MaxUnpool1d(4)
        self.cnt4=nn.ConvTranspose1d(32,1,5,1)
        self.mt6=nn.MaxUnpool1d(4)
        self.fc1=nn.Linear(32,1024)
    
     def forward(self,x):
         out=F.relu(self.cn1(x))
         out,ind1= self.mp1(out)
         out=F.relu(self.cn2(out))
         out,ind2=self.mp2(out)
         out=F.relu(self.cn3(out))
         out,ind3=self.mp3(out)
         out=F.relu(self.cn4(out))
         out,ind4=self.mp4(out)
         out=F.relu(self.cn5(out))
         out,ind5=self.mp5(out)
         out=F.relu(self.cn6(out))
         out,ind6=self.mp6(out)
         encoded=out
        
         out=self.mt1(out,ind6)
         out=F.relu(self.cnt1(out))
         out=self.mt2(out,ind5)
         out=F.relu(self.cnt2(out))
         out=self.mt3(out,ind4)
         out=F.relu(self.cnt3(out))
         out=self.mt4(out,ind3)
         out=F.relu(self.cnt4(out))
         out=self.mt5(out,ind2)
         out=F.relu(self.cnt5(out))
         out=self.mt6(out,ind1)
         out=F.relu(self.cnt6(out))
        
         
         
         return encoded, out

The second one is also similar , I am stuck here dont know how to proceed, individually i can train both these networks , but how to extract these two encoded faetues and finally feed them to a classifier, Plz  guide