code: def image_summary(self, tag, value, step):
      for idx, img in enumerate(value):
          summary = Summary()
          bio = BytesIO()
  
          if type(img) == str:
              img = PIL.Image.open(img)
          elif type(img) == PIL.Image.Image:
              pass
          else:
              img = scipy.misc.toimage(img)
  
          img.save(bio, format="png")
          image_summary = Summary.Image(
              encoded_image_string=bio.getvalue()
          )
          summary.value.add(tag=f"{tag}/{idx}", image=image_summary)
          self.summary_writer.add_summary(summary, global_step=step)
  
file_path: ENAS-pytorch/tensorboard.py
imports: import PIL
  import scipy.misc
  from io import BytesIO
  import tensorboardX
  from tensorboardX.summary import Summary
label_desc: Use image node_id 2 for calling the TensorBoard obj's underlying member method code with example usage: obj.image_summary(tag, value, step) without return types