def recall( outputs: torch.Tensor, targets: torch.Tensor, argmax_dim: int = -1, eps: float = 1e-7, num_classes: Optional[int] = None, ) -> Union[float, torch.Tensor]: """ Multiclass recall score. Args: outputs: estimated targets as predicted by a model with shape [bs; ..., (num_classes or 1)] targets: ground truth (correct) target values with shape [bs; ..., 1] argmax_dim: int, that specifies dimension for argmax transformation in case of scores/probabilities in ``outputs`` eps: float. Epsilon to avoid zero division. num_classes: int, that specifies number of classes if it known Returns: Tensor: recall for every class Examples: .. code-block:: python import torch from catalyst import metrics metrics.recall( outputs=torch.tensor([ [1, 0, 0], [0, 1, 0], [0, 0, 1], ]), targets=torch.tensor([0, 1, 2]), ) # tensor([1., 1., 1.]) .. code-block:: python import torch from catalyst import metrics metrics.recall( outputs=torch.tensor([[0, 0, 1, 1, 0, 1, 0, 1]]), targets=torch.tensor([[0, 1, 0, 1, 0, 0, 1, 1]]), ) # tensor([0.5000, 0.5000] """ _, recall_score, _, _ = precision_recall_fbeta_support( outputs=outputs, targets=targets, argmax_dim=argmax_dim, eps=eps, num_classes=num_classes, ) return recall_score
def fbeta_score( outputs: torch.Tensor, targets: torch.Tensor, beta: float = 1.0, eps: float = 1e-7, argmax_dim: int = -1, num_classes: Optional[int] = None, ) -> Union[float, torch.Tensor]: """Counts fbeta score for given ``outputs`` and ``targets``. Args: outputs: A list of predicted elements targets: A list of elements that are to be predicted beta: beta param for f_score eps: epsilon to avoid zero division argmax_dim: int, that specifies dimension for argmax transformation in case of scores/probabilities in ``outputs`` num_classes: int, that specifies number of classes if it known Raises: ValueError: If ``beta`` is a negative number. Returns: float: F_beta score. Example: .. code-block:: python import torch from catalyst import metrics metrics.fbeta_score( outputs=torch.tensor([ [1, 0, 0], [0, 1, 0], [0, 0, 1], ]), targets=torch.tensor([0, 1, 2]), beta=1, ) # tensor([1., 1., 1.]), # per class fbeta """ if beta < 0: raise ValueError("beta parameter should be non-negative") _p, _r, fbeta, _ = precision_recall_fbeta_support( outputs=outputs, targets=targets, beta=beta, eps=eps, argmax_dim=argmax_dim, num_classes=num_classes, ) return fbeta
def precision( outputs: torch.Tensor, targets: torch.Tensor, argmax_dim: int = -1, eps: float = 1e-7, num_classes: Optional[int] = None, ) -> Union[float, torch.Tensor]: """ Multiclass precision score. Args: outputs: estimated targets as predicted by a model with shape [bs; ..., (num_classes or 1)] targets: ground truth (correct) target values with shape [bs; ..., 1] argmax_dim: int, that specifies dimension for argmax transformation in case of scores/probabilities in ``outputs`` eps: float. Epsilon to avoid zero division. num_classes: int, that specifies number of classes if it known Returns: Tensor: precision for every class Examples: >>> precision( >>> outputs=torch.tensor([ >>> [1, 0, 0], >>> [0, 1, 0], >>> [0, 0, 1], >>> ]), >>> targets=torch.tensor([0, 1, 2]), >>> beta=1, >>> ) tensor([1., 1., 1.]) >>> precision( >>> outputs=torch.tensor([[0, 0, 1, 1, 0, 1, 0, 1]]), >>> targets=torch.tensor([[0, 1, 0, 1, 0, 0, 1, 1]]), >>> ) tensor([0.5000, 0.5000] """ precision_score, _, _, _, = precision_recall_fbeta_support( outputs=outputs, targets=targets, argmax_dim=argmax_dim, eps=eps, num_classes=num_classes, ) return precision_score