class_docstr: The source code of this class is under the MIT License and was copied from the Keras project,
  and has been modified.
  
  Stop training when a monitored quantity has stopped improving.
  
  Args:
      monitor (str): Quantity to be monitored.
      min_delta (float): Minimum change in the monitored quantity to qualify as an improvement,
          i.e. an absolute change of less than min_delta, will count as no improvement.
          (Default value = 0)
      patience (int): Number of epochs with no improvement after which training will be stopped.
          (Default value = 0)
      verbose (bool): Whether to print when early stopping is done.
          (Default value = False)
      mode (str): One of {'min', 'max'}. In `min` mode, training will stop when the quantity
          monitored has stopped decreasing; in `max` mode it will stop when the quantity monitored has
          stopped increasing.
          (Default value = 'min')
code: def on_epoch_end(self, epoch_number: int, logs: Dict):
      current = logs[self.monitor]
      if self.monitor_op(current - self.min_delta, self.best):
          self.best = current
          self.wait = 0
      else:
          self.wait += 1
          if self.wait >= self.patience:
              self.stopped_epoch = epoch_number
              self.model.stop_training = True
              if self.verbose:
                  print(f"Epoch {self.stopped_epoch}: early stopping")
  
imports: from typing import Dict
  import numpy
  from poutyne.framework.callbacks.callbacks import Callback
label_desc: Use image node_id 3 for calling the EarlyStopping obj's underlying member method code with example usage: obj.on_epoch_end(epoch_number, logs) without return types