예제 #1
0
    def forward(self, x):

        mean = torch.mean(x, dim=0).pow(2)
        cov = Ops.cov(x)

        cov_loss = torch.mean(
            (Variable(torch.eye(cov.size()[0]).cuda()) - cov).pow(2))

        return torch.mean(mean) + cov_loss
예제 #2
0
파일: GAN.py 프로젝트: tzrtzr000/MRTNet
    def forward(self, x):
        real, fake = x
        _, real_features = real
        _, fake_features = fake

        real_features = torch.cat(real_features, dim=1)
        fake_features = torch.cat(fake_features, dim=1)

        real_mean = torch.mean(real_features, dim=0)
        fake_mean = torch.mean(fake_features, dim=0)

        real_cov = Ops.cov(real_features)
        fake_cov = Ops.cov(fake_features)

        mean_loss = torch.sum((real_mean - fake_mean).pow(2))
        cov_loss = torch.sum((real_cov - fake_cov).pow(2))

        return mean_loss + cov_loss