code: def backward(self, req, out_grad, in_data, out_data, in_grad, aux):
          
          label = in_data[1]
          pred = out_data[0]
          dx = pred - mx.nd.one_hot(label, 2)
          pos_cls_weight = self.positive_cls_weight
          scale_factor = ((1 + label * pos_cls_weight) / pos_cls_weight).reshape((pred.shape[0],1))
          rescaled_dx = scale_factor * dx
          self.assign(in_grad[0], req[0], rescaled_dx)
docs: Implements backward computation
  
          req : list of {'null', 'write', 'inplace', 'add'}, how to assign to in_grad
          out_grad : list of NDArray, gradient w.r.t. output data.
          in_grad : list of NDArray, gradient w.r.t. input data. This is the output buffer.