• Docs >
• Module code >
• ignite.contrib.metrics.regression.mean_absolute_relative_error
Shortcuts

# Source code for ignite.contrib.metrics.regression.mean_absolute_relative_error

import torch

from ignite.contrib.metrics.regression._base import _BaseRegression
from ignite.exceptions import NotComputableError

[docs]class MeanAbsoluteRelativeError(_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

"""

def reset(self):
self._sum_of_absolute_relative_errors = 0.0
self._num_samples = 0

def _update(self, output):
y_pred, y = output
if (y == 0).any():
raise NotComputableError("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]

def compute(self):
if self._num_samples == 0:
raise NotComputableError(
"MeanAbsoluteRelativeError must have at least" "one sample before it can be computed."
)
return self._sum_of_absolute_relative_errors / self._num_samples


 © Copyright 2024, PyTorch-Ignite Contributors. Last updated on 07/17/2024, 10:10:30 AM. Built with Sphinx using a theme provided by Read the Docs.