Python torch.nn.functional.soft_margin_loss() Examples
The following are 6
code examples of torch.nn.functional.soft_margin_loss().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
torch.nn.functional
, or try the search function
.
Example #1
Source File: siammask_sharp.py From SiamMask with MIT License | 6 votes |
def select_mask_logistic_loss(p_m, mask, weight, o_sz=63, g_sz=127): weight = weight.view(-1) pos = Variable(weight.data.eq(1).nonzero().squeeze()) if pos.nelement() == 0: return p_m.sum() * 0, p_m.sum() * 0, p_m.sum() * 0, p_m.sum() * 0 if len(p_m.shape) == 4: p_m = p_m.permute(0, 2, 3, 1).contiguous().view(-1, 1, o_sz, o_sz) p_m = torch.index_select(p_m, 0, pos) p_m = nn.UpsamplingBilinear2d(size=[g_sz, g_sz])(p_m) p_m = p_m.view(-1, g_sz * g_sz) else: p_m = torch.index_select(p_m, 0, pos) mask_uf = F.unfold(mask, (g_sz, g_sz), padding=0, stride=8) mask_uf = torch.transpose(mask_uf, 1, 2).contiguous().view(-1, g_sz * g_sz) mask_uf = torch.index_select(mask_uf, 0, pos) loss = F.soft_margin_loss(p_m, mask_uf) iou_m, iou_5, iou_7 = iou_measure(p_m, mask_uf) return loss, iou_m, iou_5, iou_7
Example #2
Source File: siammask.py From SiamMask with MIT License | 6 votes |
def select_mask_logistic_loss(p_m, mask, weight, o_sz=63, g_sz=127): weight = weight.view(-1) pos = Variable(weight.data.eq(1).nonzero().squeeze()) if pos.nelement() == 0: return p_m.sum() * 0, p_m.sum() * 0, p_m.sum() * 0, p_m.sum() * 0 p_m = p_m.permute(0, 2, 3, 1).contiguous().view(-1, 1, o_sz, o_sz) p_m = torch.index_select(p_m, 0, pos) p_m = nn.UpsamplingBilinear2d(size=[g_sz, g_sz])(p_m) p_m = p_m.view(-1, g_sz * g_sz) mask_uf = F.unfold(mask, (g_sz, g_sz), padding=32, stride=8) mask_uf = torch.transpose(mask_uf, 1, 2).contiguous().view(-1, g_sz * g_sz) mask_uf = torch.index_select(mask_uf, 0, pos) loss = F.soft_margin_loss(p_m, mask_uf) iou_m, iou_5, iou_7 = iou_measure(p_m, mask_uf) return loss, iou_m, iou_5, iou_7
Example #3
Source File: relative_loss.py From DenseMatchingBenchmark with MIT License | 5 votes |
def loss_per_level(self, estDisp, gtDisp, label): N, C, H, W = estDisp.shape scaled_gtDisp = gtDisp scale = 1.0 if gtDisp.shape[-2] != H or gtDisp.shape[-1] != W: # compute scale per level and scale gtDisp scale = gtDisp.shape[-1] / (W * 1.0) scaled_gtDisp = gtDisp / scale scaled_gtDisp = self.scale_func(scaled_gtDisp, (H, W)) # mask for valid disparity # (start disparity, max disparity / scale) # Attention: the invalid disparity of KITTI is set as 0, be sure to mask it out mask = (scaled_gtDisp > self.start_disp) & (scaled_gtDisp < (self.max_disp / scale)) if mask.sum() < 1.0: print('Relative loss: there is no point\'s disparity is in ({},{})!'.format(self.start_disp, self.max_disp / scale)) loss = (torch.abs(estDisp - scaled_gtDisp) * mask.float()).mean() return loss # relative loss valid_pixel_number = mask.float().sum() diff = scaled_gtDisp[mask] - estDisp[mask] label = label[mask] # some value which is over large for torch.exp() is not suitable for soft margin loss # get absolute value great than 66 over_large_mask = torch.gt(torch.abs(diff), 66) over_large_diff = diff[over_large_mask] # get absolute value smaller than 66 proper_mask = torch.le(torch.abs(diff), 66) proper_diff = diff[proper_mask] # generate lable for soft margin loss label = label[proper_mask] loss = F.soft_margin_loss(proper_diff, label, reduction='sum') + torch.abs(over_large_diff).sum() loss = loss / valid_pixel_number return loss
Example #4
Source File: metric_loss.py From fast-reid with Apache License 2.0 | 5 votes |
def __call__(self, _, global_features, targets): if self._normalize_feature: global_features = normalize(global_features, axis=-1) dist_mat = euclidean_dist(global_features, global_features) N = dist_mat.size(0) is_pos = targets.expand(N, N).eq(targets.expand(N, N).t()) is_neg = targets.expand(N, N).ne(targets.expand(N, N).t()) if self._hard_mining: dist_ap, dist_an = hard_example_mining(dist_mat, is_pos, is_neg) else: dist_ap, dist_an = weighted_example_mining(dist_mat, is_pos, is_neg) y = dist_an.new().resize_as_(dist_an).fill_(1) if self._margin > 0: loss = F.margin_ranking_loss(dist_an, dist_ap, y, margin=self._margin) else: loss = F.soft_margin_loss(dist_an - dist_ap, y) if loss == float('Inf'): loss = F.margin_ranking_loss(dist_an, dist_ap, y, margin=0.3) return { "loss_triplet": loss * self._scale, }
Example #5
Source File: batch_metrics.py From poutyne with GNU Lesser General Public License v3.0 | 5 votes |
def soft_margin(y_pred, y_true): return F.soft_margin_loss(y_pred, y_true)
Example #6
Source File: test_pyprof_nvtx.py From apex with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_soft_margin_loss(self): inp = torch.randn(32, 128, device='cuda', dtype=self.dtype, requires_grad=True) target = torch.randn(32, 128, device='cuda', dtype=self.dtype, requires_grad=False) output = F.soft_margin_loss(inp, target, size_average=None, reduce=None, reduction='mean')