Be careful, if you’ve just removed the item() operation in this code snippet:
L1=geomloss.SamplesLoss()(ccc.unsqueeze(2),ccc1.unsqueeze(2))
MSECMBSS=L1.sum().item() # HERE
loss2=Variable(torch.tensor(MSECMBSS),requires_grad=True)

as you would be still be recreating the tensor, which will not create any gradients in the model.
Use this instead and check, if gradients are properly calculated:
L1 = geomloss.SamplesLoss()(ccc.unsqueeze(2),ccc1.unsqueeze(2))
MSECMBSS = L1.sum().item()
loss2 = MSECMBSS