From 6f278a962d70e90ac530f5723e198c7c356e8297 Mon Sep 17 00:00:00 2001 From: Jordan Gong Date: Sat, 9 Jan 2021 20:53:29 +0800 Subject: Fix NaN when separate sum is zero --- utils/triplet_loss.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'utils/triplet_loss.py') diff --git a/utils/triplet_loss.py b/utils/triplet_loss.py index 1d63a0e..1899cc9 100644 --- a/utils/triplet_loss.py +++ b/utils/triplet_loss.py @@ -30,8 +30,9 @@ class BatchAllTripletLoss(nn.Module): all_loss = F.relu(self.margin + positive_negative_dist).view(p, -1) # Non-zero parted mean - parted_loss_mean = all_loss.sum(1) / (all_loss != 0).sum(1) - parted_loss_mean[parted_loss_mean == float('Inf')] = 0 + non_zero_counts = (all_loss != 0).sum(1) + parted_loss_mean = all_loss.sum(1) / non_zero_counts + parted_loss_mean[non_zero_counts == 0] = 0 loss = parted_loss_mean.sum() return loss -- cgit v1.2.3 From 7188d71b2b6faf3da527c8d0ade9a32ec4893dc5 Mon Sep 17 00:00:00 2001 From: Jordan Gong Date: Mon, 11 Jan 2021 21:15:58 +0800 Subject: Implement evaluator --- utils/triplet_loss.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'utils/triplet_loss.py') diff --git a/utils/triplet_loss.py b/utils/triplet_loss.py index 1899cc9..8c143d6 100644 --- a/utils/triplet_loss.py +++ b/utils/triplet_loss.py @@ -15,8 +15,8 @@ class BatchAllTripletLoss(nn.Module): # Euclidean distance p x n x n x_squared_sum = torch.sum(x ** 2, dim=2) - x1_squared_sum = x_squared_sum.unsqueeze(1) - x2_squared_sum = x_squared_sum.unsqueeze(2) + x1_squared_sum = x_squared_sum.unsqueeze(2) + x2_squared_sum = x_squared_sum.unsqueeze(1) x1_times_x2_sum = x @ x.transpose(1, 2) dist = torch.sqrt( F.relu(x1_squared_sum - 2 * x1_times_x2_sum + x2_squared_sum) -- cgit v1.2.3