Hi Team, I have a loss function where I am calculating the loss over multiple domains and summing it up to form the final loss, and for each epoch, I am doing gradient descent on it. Can you plz let me know if the implementation is correct?
def train_AE():
for epoch in range(epochs): train_loss = 0 losses = [] for domain in range(domains): dataset = Dataset(dom=domain) dataloader = DataLoader(dataset, batch_size=batch_size, shuffle=False) for input, out, targets in dataloader: # data = data.to(device) input = input.float().to(device) dom_out = out.float().to(device) # ground truth data targets = targets.long().to(device) optimizer.zero_grad()
logits, recon_batch = multitaskAE(input) ## model
loss_mse = customLoss() loss = loss_mse(recon_batch, dom_out, logits, targets) losses.append(loss) final_loss = torch.sum(torch.stack(losses)) final_loss.backward() train_loss += final_loss.item() optimizer.step() if epochs % 50 == 0: print('====> Epoch: {} Average loss: {:.4f}'.format( epochs, train_loss / len(dataloader.dataset))) train_losses.append(train_loss / len(dataloader.dataset))