class_docstr: This class provides a collection of logging properties that are useful for training.
  These include setting the save folder, in which progression of training/testing metrics is visualized,
  csv log-files are stored, sample recoveries are plotted and an internal data saver.
class_docstr_tok: ["This","class","provides","a","collection","of","logging","properties","that","are","useful","for","training",".","These","include","setting","the","save","folder",",","in","which","progression","of","training\/testing","metrics","is","visualized",",","csv","log-files","are","stored",",","sample","recoveries","are","plotted","and","an","internal","data","saver","."]
docstr: Create a new updated version of training/metric progression plot.
  
  Args:
      None
  Returns:
      Nothing!
docstr_tok: ["Create","a","new","updated","version","of","training\/metric","progression","plot",".","Args",":","None","Returns",":","Nothing","!"]
code: def update_info_plot(self):
      """
      Create a new updated version of training/metric progression plot.
  
      Args:
          None
      Returns:
          Nothing!
      """
      t_epochs = self.progress_saver["val"]["Epochs"]
      t_loss_list = [self.progress_saver["train"]["Train Loss"]]
      t_legend_handles = ["Train Loss"]
  
      v_epochs = self.progress_saver["val"]["Epochs"]
      # Because Vehicle-ID normally uses three different test sets, a distinction has to be made.
      if self.prop.dataset != "vehicle_id":
          title = " | ".join(
              key + ": {0:3.3f}".format(np.max(item))
              for key, item in self.progress_saver["val"].items()
              if key not in ["Time", "Epochs"]
          )
          self.info_plot.title = title
          v_metric_list = [
              self.progress_saver["val"][key]
              for key in self.progress_saver["val"].keys()
              if key not in ["Time", "Epochs"]
          ]
          v_legend_handles = [
              key
              for key in self.progress_saver["val"].keys()
              if key not in ["Time", "Epochs"]
          ]
  
          self.info_plot.make_plot(
              t_epochs,
              v_epochs,
              t_loss_list,
              v_metric_list,
              t_legend_handles,
              v_legend_handles,
          )
      else:
          # Iterate over all test sets.
          for i in range(3):
              title = " | ".join(
                  key + ": {0:3.3f}".format(np.max(item))
                  for key, item in self.progress_saver["val"].items()
                  if key not in ["Time", "Epochs"]
                  and "Set {}".format(i) in key
              )
              self.info_plot["Set {}".format(i)].title = title
              v_metric_list = [
                  self.progress_saver["val"][key]
                  for key in self.progress_saver["val"].keys()
                  if key not in ["Time", "Epochs"]
                  and "Set {}".format(i) in key
              ]
              v_legend_handles = [
                  key
                  for key in self.progress_saver["val"].keys()
                  if key not in ["Time", "Epochs"]
                  and "Set {}".format(i) in key
              ]
              self.info_plot["Set {}".format(i)].make_plot(
                  t_epochs,
                  v_epochs,
                  t_loss_list,
                  v_metric_list,
                  t_legend_handles,
                  v_legend_handles,
                  appendix="set_{}".format(i),
              )
  
imports: import warnings
  import csv
  import datetime
  import os
  import pickle
  import faiss
  import matplotlib.pyplot
  import numpy
  import torch
  from PIL import Image
  from sklearn import metrics
  from torch import nn
  from tqdm import tqdm
  import pdb
label_desc: Use image node_id 4 for calling the LOGGER obj's underlying member method code with example usage: obj.update_info_plot() without return types