code: def lovasz_softmax_flat(probas, labels, only_present=False):
      
      C = probas.size(1)
      losses = []
      for c in range(C):
          fg = (labels == c).float() # foreground for class c
          if only_present and fg.sum() == 0:
              continue
          errors = (Variable(fg) - probas[:, c]).abs()
          errors_sorted, perm = torch.sort(errors, 0, descending=True)
          perm = perm.data
          fg_sorted = fg[perm]
          losses.append(torch.dot(errors_sorted, Variable(lovasz_grad(fg_sorted))))
      return mean(losses)
docs: Multi-class Lovasz-Softmax loss
        probas: [P, C] Variable, class probabilities at each prediction (between 0 and 1)
        labels: [P] Tensor, ground truth labels (between 0 and C - 1)
        only_present: average only on classes present in ground truth