class_docstr: Stop training has reached a desired hit rate.
class_docstr_tok: ["Stop","training","has","reached","a","desired","hit","rate","."]
code: def on_epoch_end(self, epoch, logs=None):
      current = self.get_monitor_value(logs)
      if current and current >= self.desired:
          self.stopped_epoch = epoch
          self.model.stop_training = True
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import json
  import yaml
  import os
  import sys
  import tensorflow
  from absl import app
  from absl import flags
  from absl import logging
  from os.path import expanduser
  from tensorflow_addons.optimizers import LazyAdam
  from utils.recommendation import constants
  from utils.recommendation import movielens
  from utils.recommendation import ncf_common
  from utils.recommendation import ncf_input_pipeline
  from utils.recommendation import neumf_model
  from utils.flags import core
  from utils.logs import logger
  from utils.logs import mlperf_helper
  from utils.misc import keras_utils
  from utils.misc import model_helpers
  from autodist import AutoDist
  from autodist.strategy.ps_strategy import PS
  from autodist.strategy.ps_lb_strategy import PSLoadBalancing
  from autodist.strategy.partitioned_ps_strategy import PartitionedPS
  from autodist.strategy.all_reduce_strategy import AllReduce
  from autodist.strategy.parallax_strategy import Parallax
label_desc: Use image node_id 2 for calling the CustomEarlyStopping obj's underlying member method code with example usage: obj.on_epoch_end(epoch, logs) without return types