code: def update_stats(
      self, true, pred, loss, lr, time_used, params, **kwargs
  ):
      assert true.shape[0] == pred.shape[0]
      self._iter += 1
      self._true.append(true)
      self._pred.append(pred)
      batch_size = true.shape[0]
      self._size_current += batch_size
      self._loss += loss * batch_size
      self._lr = lr
      self._params = params
      self._time_used += time_used
      self._time_total += time_used
      for key, val in kwargs.items():
          if key not in self._custom_stats:
              self._custom_stats[key] = val * batch_size
          else:
              self._custom_stats[key] += val * batch_size
  
imports: import logging
  import math
  import sys
  import torch
  import graphgym.register
  from graphgym.config import cfg
  from graphgym.utils.device import get_current_gpu_usage
  from graphgym.utils.io import dict_to_json, dict_to_tb, makedirs
label_desc: Use image node_id 13 for calling the Logger obj's underlying member method code with example usage: obj.update_stats(true, pred, loss, lr, time_used, params) without return types