code: def hparam(name, hparam_dict, metric_list, walltime):
      """Package data to one histogram.
  
      Args:
          name (str): Name of hparam.
          hparam_dict (dictionary): Each key-value pair in the dictionary is the
                name of the hyper parameter and it's corresponding value. The type of the value
                can be one of `bool`, `string`, `float`, `int`, or `None`.
          metric_list (list): Name of all metrics.
          walltime (int): Wall time of hparam.
  
      Return:
          Package with format of record_pb2.Record
      """
  
      hm = Record.HParam()
      hm.name = name
      for k, v in hparam_dict.items():
          if v is None:
              continue
          hparamInfo = Record.HParam.HparamInfo()
          hparamInfo.name = k
          if isinstance(v, int):
              hparamInfo.int_value = v
              hm.hparamInfos.append(hparamInfo)
          elif isinstance(v, float):
              hparamInfo.float_value = v
              hm.hparamInfos.append(hparamInfo)
          elif isinstance(v, str):
              hparamInfo.string_value = v
              hm.hparamInfos.append(hparamInfo)
          else:
              print(
                  "The value of %s must be int, float or str, not %s"
                  % (k, str(type(v)))
              )
      for metric in metric_list:
          metricInfo = Record.HParam.HparamInfo()
          metricInfo.name = metric
          metricInfo.float_value = 0
          hm.metricInfos.append(metricInfo)
  
      return Record(
          values=[
              Record.Value(
                  id=1, tag="hparam", timestamp=walltime, hparam=hm
              )
          ]
      )
  
imports: import numpy
  from PIL import Image
  from visualdl.proto.record_pb2 import Record
label_desc: Use image node_id 13 for calling a global function with example usage: hparam(name, hparam_dict, metric_list, walltime) and returns: Record