code: def notify(self, method_name, **cb_kwargs):
          
          getattr(self, method_name)(self, **cb_kwargs)
          for _, cb in self.callbacks_:
              getattr(cb, method_name)(self, **cb_kwargs)
docs: Call the callback method specified in ``method_name`` with
          parameters specified in ``cb_kwargs``.
  
          Method names can be one of:
          * on_train_begin
          * on_train_end
          * on_epoch_begin
          * on_epoch_end
          * on_batch_begin
          * on_batch_end