def __init__(self, metrics_plotter=None, horovod=None, training_callbacks=None, *args, **kwargs):
        """
        :param metrics_plotter: object that plots training and validation metrics (see `TensorboardMetricsPlotter`)
        :param horovod: horovod module initialized for training on multiple GPUs. If None, uses single GPU, or CPU
        :param training_callbacks: list of instances of `AbstractKerasModelCallback`/`ParametrizedCallback` or None.
            In subclasses, please call `_create_essential_callbacks` to get essential callbacks, and/or put your own
            ones in this argument.
        """
        super(AbstractKerasModel, self).__init__(*args, **kwargs)

        self._metrics_plotter = metrics_plotter if metrics_plotter else DummyMetricsPlotter()
        self._horovod = horovod

        self._class_weight = None
        self._callbacks = training_callbacks or []

        :param metrics_plotter: object that plots training and validation metrics (see `TensorboardMetricsPlotter`)
        :param horovod: horovod module initialized for training on multiple GPUs. If None, uses single GPU, or CPU
        :param training_callbacks: list of instances of `AbstractKerasModelCallback`/`ParametrizedCallback` or None.
            In subclasses, please call `_create_essential_callbacks` to get essential callbacks, and/or put your own
            ones in this argument.
        
cakechat/dialog_model/keras_model.py