@staticmethod
def agreement_step(higherprobclass, labels):
    """Returns the agreement between predictions and true labels

        Agreements between predictions and labels are different based on
        different scenarios. This default implementation is the normal case
        where total number of correct predictions are divided by the total
        number of predictions. The function returns two values, one the
        nominator and the other denominator in order to generalise for all
        possible cases. This must be overridden if other kind of agreement
        is desired.

        :param higherprobclass: the predicted class
        :type higherprobclass: :class:`torch.Tensor`
        :param labels: ground truth labels
        :type labels: :class:`torch.Tensor`
        :return: tuple of tensors, nominator and denominator to compute the
            agreement
        """
    num_correct = (higherprobclass == labels).float().sum()
    num_total = labels.shape[0]
    return num_correct, num_total
