def __init__(self, reduction='mean'): super(_Loss, self).__init__() if reduction is None: reduction = 'none' if reduction not in ('mean', 'sum', 'none'): raise ValueError(f"reduction method for {reduction.lower()} is not supported") self.average = True self.reduce = True if reduction == 'sum': self.average = False if reduction == 'none': self.reduce = False self.reduce_mean = _selected_ops.ReduceMean() self.reduce_sum = P.ReduceSum()
def __init__(self, reduction='mean', weights=1.0): super(_Loss, self).__init__() if reduction is None: reduction = 'none' if reduction not in ('mean', 'sum', 'none'): raise ValueError( f"reduction method for {reduction.lower()} is not supported") self.average = True self.reduce = True if reduction == 'sum': self.average = False if reduction == 'none': self.reduce = False self.reduce_mean = _selected_ops.ReduceMean() self.reduce_sum = P.ReduceSum() self.mul = P.Mul() if isinstance(weights, int): self.weights = float(weights) else: self.weights = weights