code: def gather_args(self: Learner):
      "Gather config parameters accessible to the learner"
      # args stored by `store_attr`
      cb_args = {
          f"{cb}": getattr(cb, "__stored_args__", True)
          for cb in self.cbs
      }
      args = {"Learner": self, **cb_args}
      # input dimensions
      try:
          n_inp = self.dls.train.n_inp
          args["n_inp"] = n_inp
          xb = self.dls.valid.one_batch()[:n_inp]
          args.update(
              {
                  f"input {n+1} dim {i+1}": d
                  for n in range(n_inp)
                  for i, d in enumerate(list(detuplify(xb[n]).shape))
              }
          )
      except:
          print(f"Could not gather input dimensions")
      # other useful information
      with ignore_exceptions():
          args["batch size"] = self.dls.bs
          args["batch per epoch"] = len(self.dls.train)
          args["model parameters"] = total_params(self.model)[0]
          args["device"] = self.dls.device.type
          args["frozen"] = bool(self.opt.frozen_idx)
          args["frozen idx"] = self.opt.frozen_idx
          args["dataset.tfms"] = f"{self.dls.dataset.tfms}"
          args["dls.after_item"] = f"{self.dls.after_item}"
          args["dls.before_batch"] = f"{self.dls.before_batch}"
          args["dls.after_batch"] = f"{self.dls.after_batch}"
      return args
  
imports: from __future__ import annotations
  from ..basics import *
  from .progress import *
  from ..text.data import TensorText
  from ..tabular.all import TabularDataLoaders, Tabular
  from .hook import total_params
  from .tracker import SaveModelCallback
  import wandb
label_desc: Use image node_id 1 for calling a global function with example usage: gather_args() and returns: args