class_docstr: Saves model topology, losses & metrics for tensorboard and tensorboard projector during training
code: def after_epoch(self):
      for n, v in zip(
          self.recorder.metric_names[2:-1], self.recorder.log[2:-1]
      ):
          self.writer.add_scalar(n, v, self.train_iter)
      if self.log_preds:
          b = self.dls.valid.one_batch()
          self.learn.one_batch(0, b)
          preds = getcallable(self.loss_func, "activation")(self.pred)
          out = getcallable(self.loss_func, "decodes")(preds)
          x, y, its, outs = self.dls.valid.show_results(
              b, out, show=False, max_n=self.n_preds
          )
          tensorboard_log(x, y, its, outs, self.writer, self.train_iter)
  
imports: from __future__ import annotations
  from ..basics import *
  import tensorboard
  from torch.utils.tensorboard import SummaryWriter
  from .fp16 import ModelToHalf
  from .hook import hook_output
  from ..text.all import LMLearner, TextLearner
  from ..vision.data import *
  from ..vision.core import TensorPoint, TensorBBox
label_desc: Use image node_id 4 for calling the TensorBoardCallback obj's underlying member method code with example usage: obj.after_epoch() without return types