class_docstr: A variant of Logger tailored for tracking average values over epochs.
  
  Typical use case: there is some quantity which is calculated many times
  throughout an epoch, and at the end of the epoch, you would like to 
  report the average / std / min / max value of that quantity.
  
  With an EpochLogger, each time the quantity is calculated, you would
  use 
  
  .. code-block:: python
  
      epoch_logger.store(NameOfQuantity=quantity_value)
  
  to load it into the EpochLogger's state. Then at the end of the epoch, you 
  would use 
  
  .. code-block:: python
  
      epoch_logger.log_tabular(NameOfQuantity, **options)
  
  to record the desired values.
code: def __init__(self, *args, **kwargs):
      super().__init__(*args, **kwargs)
      self.epoch_dict = dict()
  
imports: import json
  import joblib
  import shutil
  import numpy
  import tensorflow
  import torch
  import os.path, time, atexit, os
  import warnings
  from spinup.utils.mpi_tools import proc_id, mpi_statistics_scalar
  from spinup.utils.serialization_utils import convert_json
label_desc: Use image node_id 1 to create a new EpochLogger object from inherited base classes: Logger with example: obj = EpochLogger()