code: def _add_projector_features(learn, hook, feat):
      img = _normalize_for_projector(learn.x)
      first_epoch = True if learn.iter == 0 else False
      feat["vec"] = (
          hook.stored
          if first_epoch
          else torch.cat((feat["vec"], hook.stored), 0)
      )
      feat["img"] = (
          img if first_epoch else torch.cat((feat["img"], img), 0)
      )
      if getattr(learn.dl, "vocab", None):
          feat["lbl"] = (
              learn.y
              if first_epoch
              else torch.cat((feat["lbl"], learn.y), 0)
          )
      return feat
  
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 2 for calling a global function with example usage: _add_projector_features(learn, hook, feat) and returns: feat