I’m using a discriminator to classify real and fake instances in terms of segmentation. The loss is Binary Cross Entropy. The implementation looks something like this:
# Adversarial ground truths
valid = Variable(Tensor(5, 1).fill_(1.0), requires_grad=False)
fake = Variable(Tensor(5, 1).fill_(0.0), requires_grad=False)

real_img = Variable(batch_labels.type(Tensor))   # Ground truth masks 
        
fake_img = Variable(output.type(Tensor)) # Predicted masks

bce = nn.BCELoss().cuda(GPU)

adv_loss = bce(discrimintor(fake_img),valid)   ## Measures Segmenter's ability to fool the discriminator

I came up with an approach where instead of passing the valid tensor in bce loss we use ground truth masks. Something like this:
adv_loss = bce(discrimintor(fake_img),discriminator(real_img))
This is the implementation I came up with the adversarial loss. I just wanted to verify if it’s the correct implementation for the approach.