Sorry one final question concerning how the computation graphs and gradient updates are implemented under the hood. Suppose I have several losses as indicated above, and call .backward() on each loss like this:
# axis 0 is minibatch dimension, axis 1 is channel
BCE_Loss0 = F.binary_cross_entropy(fwdPass[:,0,:], target[:,0,:])

L2_loss1 = torch.norm(fwdPass[:,1,:], target[:,1,:])
L2_loss2 = torch.norm(fwdPass[:,2,:], target[:,2,:])

# optimG is adam gradient optimizer, defined elsewhere in code
optimG.zero_grad()

BCE_loss0.backward()
L2_loss1.backward()
L2_loss2.backward()
optimG.step()

Will cause the backpropagated gradients to be summed over each of the loss functions? In other words, is this effectively equivalent to
totalLoss = BCE_loss0 + L2_loss1 + L2_loss2
totalLoss.backward()
optimG.step()