v2
This commit is contained in:
@@ -105,10 +105,12 @@ class MGCLoss(nn.Module):
|
||||
Minimal Geometry-Distortion Constraint Loss from https://openreview.net/forum?id=R5M7Mxl1xZ
|
||||
"""
|
||||
|
||||
def __init__(self, beta=0.5, lambda_=0.05, device=idist.device()):
|
||||
def __init__(self, mi_to_loss_way="opposite", beta=0.5, lambda_=0.05, device=idist.device()):
|
||||
super().__init__()
|
||||
self.beta = beta
|
||||
self.lambda_ = lambda_
|
||||
assert mi_to_loss_way in ["opposite", "reciprocal"]
|
||||
self.mi_to_loss_way = mi_to_loss_way
|
||||
mu_y, mu_x = torch.meshgrid([torch.arange(-1, 1.25, 0.25), torch.arange(-1, 1.25, 0.25)])
|
||||
self.mu_x = mu_x.flatten().to(device)
|
||||
self.mu_y = mu_y.flatten().to(device)
|
||||
@@ -134,6 +136,8 @@ class MGCLoss(nn.Module):
|
||||
|
||||
def forward(self, fake, real):
|
||||
rSMI = self.batch_rSMI(fake, real, self.mu_x, self.mu_y, self.beta, self.lambda_, self.R)
|
||||
if self.mi_to_loss_way == "reciprocal":
|
||||
return 1/rSMI.mean()
|
||||
return -rSMI.mean()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user