def METHOD_NAME(self, epoch: int, logs: MutableMapping[str, Any] = None) -> None:
    logs = logs or {}
    metrics = self._calculate_metrics()
    logs_ = {}
    logs_.update(logs)
    logs_.update(metrics)
    with tf.name_scope("1.train_validation"):
        self._log_epoch_metrics(self.step, logs_)
    if self.histogram_freq and epoch % self.histogram_freq == 0:
        self._log_weights(self.step)
    if self.embeddings_freq and epoch % self.embeddings_freq == 0:
        self._log_embeddings(self.step)