Could anybody help me out by translating this recall@top-k formula to a “regular” recall?
It concerns a classification task which ranges from 3087 to 1027 classes.
Current code for recall@10,20,30
def recallTop(y_true, y_pred, rank=[10, 20, 30]):
  outer = []
  for x in range(len(y_pred)):
    pred_value = y_pred[x]
    true_value = y_true[x]
    pred_value = torch.round(pred_value).clone().detach()
    TP = torch.sum(torch.logical_and(true_value == 1, pred_value))   # True positives (predictions)
    inner = []
    for i in rank:
      TP_k = torch.sum(torch.logical_and(pred_value[:, :i] == 1, true_value[:, :i]))  # True positives @top 10, 20, 30
      inner.append(TP_k)
    avg = torch.div(torch.tensor(inner), TP)
    avg[torch.isnan(avg)] = 0
    outer.append(avg.tolist())

  return (np.array(outer)).mean(axis=0)

Current code in training loop
train_recall.append(recallTop(y, output))

Current code in every epochs
avg_train_recall = (np.array(train_recall)).mean(axis=0)

print("Epoch: {}/{}...".format(e + 1, epochs),
"Train Recall@10, Recall@20, Recall@30", avg_train_recall)