[docs]classMeanAbsoluteRelativeError(_BaseRegression):r""" Calculate Mean Absolute Relative Error: :math:`\text{MARE} = \frac{1}{n}\sum_{j=1}^n\frac{\left|A_j-P_j\right|}{\left|A_j\right|}`, where :math:`A_j` is the ground truth and :math:`P_j` is the predicted value. More details can be found in the reference `Botchkarev 2018`__. - ``update`` must receive output of the form ``(y_pred, y)`` or ``{'y_pred': y_pred, 'y': y}``. - `y` and `y_pred` must be of same shape `(N, )` or `(N, 1)`. __ https://arxiv.org/ftp/arxiv/papers/1809/1809.03006.pdf """defreset(self):self._sum_of_absolute_relative_errors=0.0self._num_samples=0def_update(self,output):y_pred,y=outputif(y==0).any():raiseNotComputableError("The ground truth has 0.")absolute_error=torch.abs(y_pred-y.view_as(y_pred))/torch.abs(y.view_as(y_pred))self._sum_of_absolute_relative_errors+=torch.sum(absolute_error).item()self._num_samples+=y.size()[0]defcompute(self):ifself._num_samples==0:raiseNotComputableError("MeanAbsoluteRelativeError must have at least""one sample before it can be computed.")returnself._sum_of_absolute_relative_errors/self._num_samples