Retrieval Mean Reciprocal Rank (MRR)¶
Module Interface¶
- class torchmetrics.RetrievalMRR(empty_target_action='neg', ignore_index=None, **kwargs)[source]
Computes Mean Reciprocal Rank.
Works with binary target data. Accepts float predictions from a model output.
As input to
forward
andupdate
the metric accepts the following input:preds
(Tensor
): A float tensor of shape(N, ...)
target
(Tensor
): A long or bool tensor of shape(N, ...)
indexes
(Tensor
): A long tensor of shape(N, ...)
which indicate to which query a prediction belongs
As output to
forward
andcompute
the metric returns the following output:mrr
(Tensor
): A single-value tensor with the reciprocal rank (RR) of the predictionspreds
w.r.t. the labelstarget
All
indexes
,preds
andtarget
must have the same dimension and will be flatten at the beginning, so that for example, a tensor of shape(N, M)
is treated as(N * M, )
. Predictions will be first grouped byindexes
and then will be computed as the mean of the metric over each query.- Parameters
Specify what to do with queries that do not have at least a positive
target
. Choose from:'neg'
: those queries count as0.0
(default)'pos'
: those queries count as1.0
'skip'
: skip those queries; if all queries are skipped,0.0
is returned'error'
: raise aValueError
ignore_index¶ (
Optional
[int
]) – Ignore predictions where the target is equal to this number.kwargs¶ (
Any
) – Additional keyword arguments, see Advanced metric settings for more info.
- Raises
ValueError – If
empty_target_action
is not one oferror
,skip
,neg
orpos
.ValueError – If
ignore_index
is not None or an integer.
Example
>>> from torchmetrics import RetrievalMRR >>> indexes = tensor([0, 0, 0, 1, 1, 1, 1]) >>> preds = tensor([0.2, 0.3, 0.5, 0.1, 0.3, 0.5, 0.2]) >>> target = tensor([False, False, True, False, True, False, True]) >>> mrr = RetrievalMRR() >>> mrr(preds, target, indexes=indexes) tensor(0.7500)
Initializes internal Module state, shared by both nn.Module and ScriptModule.
Functional Interface¶
- torchmetrics.functional.retrieval_reciprocal_rank(preds, target)[source]
Computes reciprocal rank (for information retrieval). See Mean Reciprocal Rank
preds
andtarget
should be of the same shape and live on the same device. If notarget
isTrue
, 0 is returned.target
must be either bool or integers andpreds
must befloat
, otherwise an error is raised.- Parameters
- Return type
- Returns
a single-value tensor with the reciprocal rank (RR) of the predictions
preds
wrt the labelstarget
.
Example
>>> from torchmetrics.functional import retrieval_reciprocal_rank >>> preds = torch.tensor([0.2, 0.3, 0.5]) >>> target = torch.tensor([False, True, False]) >>> retrieval_reciprocal_rank(preds, target) tensor(0.5000)