text: import torch
  
  
  def accuracy_at_k(output, target, top_k=(1, 5)):
      """Computes the accuracy over the k top predictions for the specified values of k"""
      with torch.no_grad():
          maxk = max(top_k)
          batch_size = target.size(0)
  
          _, pred = output.topk(maxk, 1, True, True)
          pred = pred.t()
          correct = pred.eq(target.view(1, -1).expand_as(pred))
  
          res = []
          for k in top_k:
              correct_k = correct[:k].contiguous().view(-1).float().sum(0, keepdim=True)
              res.append(correct_k.mul_(100.0 / batch_size))
          return res
  
  
  def weighted_mean(outputs, key, batch_size_key):
      value = 0
      n = 0
      for out in outputs:
          value += out[batch_size_key] * out[key]
          n += out[batch_size_key]
      value = value / n
      return value.squeeze(0)
  