class_docstr: Send a notification to a channel at the beginning/ending of the training/testing and at a constant frequency
  (`alert_frequency`) during the training.
  
  Args:
      notificator (~poutyne.Notificator): The notification channel to send the message.
          The expected interface need to implement a `send_notification` method to send the message. You can see the
          `notif <https://notificationdoc.ca/index.html>`_ package which implements some Notificator respecting the
          interface.
      alert_frequency (int): The frequency (in epoch), during training, to send an update. By default, 1.
      experiment_name (Union[str, None]): The name of the experiment to add to the message. By default, None.
  
  Example:
  
      .. code-block:: python
  
          from notif.notificator import SlackNotificator
          from poutyne.framework.callbacks.notification import NotificationCallback
  
          webhook_url = "a_link"
          slack_notif = SlackNotificator(webhook_url=webhook_url)
  
          notif_callback = NotificationCallback(notificator=slack_notif)
  
          model = Model(...)
          model.fit_generator(..., callbacks=[notif_callback])
docstr: Send the message to the channel 'Epoch is done' or 'Epoch is done for the experiment experiment_name'
  if an experiment name is given and the logs metrics (one per line).
docstr_tok: ["Send","the","message","to","the","channel","'Epoch","is","done","'","or","'Epoch","is","done","for","the","experiment","experiment_name'","if","an","experiment","name","is","given","and","the","logs","metrics","(","one","per","line",")","."]
code: def on_epoch_end(self, epoch_number: int, logs: Dict) -> None:
      """
      Send the message to the channel 'Epoch is done' or 'Epoch is done for the experiment experiment_name'
      if an experiment name is given and the logs metrics (one per line).
      """
  
      if epoch_number % self.alert_frequency == 0:
          message = (
              f"Here the epoch metrics: \n{self._format_logs(logs)}"
          )
          self.notificator.send_notification(
              message,
              subject=f"Epoch {epoch_number} is done{self.experiment_name_msg}.",
          )
  
file_path: poutyne/poutyne/framework/callbacks/notification.py
imports: from abc import ABC, abstractmethod
  from typing import Dict, Union
  from poutyne.framework.callbacks.callbacks import Callback
label_desc: Use image node_id 3 for calling the NotificationCallback obj's underlying member method code with example usage: obj.on_epoch_end(epoch_number, logs) without return types