If you want to feed the same input (or batch of inputs) to multiple networks, you can create a list of modules and optimizers. Just use these inside the training, like you would use a single network. Something like this should work.
models = list([mode1, model2,...., model10])
optimizers = list([optimizer1, optimizer2,...., optimizer10])

for model in models:
     model.train()
            
for batch in train_loader:
     inputs, targets = batch['input'].to(device), batch['target'].to(device)
     for c in range(classnum):
          optimizers[c].zero_grad()
                
                             :
                             :
                             :
           outputs = models[c](each_input)
           loss = criterion(outputs, targets)        
           loss.backward()
           optimizers[c].step()

           running_loss += loss.item()