def METHOD_NAME(model):
    """Custom evaluate function to estimate the accuracy of the model.
    Args:
        model (tf.Graph_def): The input model graph
    Returns:
        accuracy (float): evaluation result, the larger is better.
    """
    infer = model.signatures["serving_default"]
    output_dict_keys = infer.structured_outputs.keys()
    output_name = list(output_dict_keys )[0]
    from neural_compressor import METRICS
    metrics = METRICS('tensorflow')
    metric = metrics['topk']()
    def eval_func(dataloader, metric):
        warmup = 5
        iteration = None
        latency_list = []
        if args.benchmark and args.mode == 'performance':
            iteration = args.iters
        for idx, (inputs, labels) in enumerate(dataloader):
            inputs = np.array(inputs)
            input_tensor = tf.constant(inputs)
            start = time.time()
            predictions = infer(input_tensor)[output_name]
            end = time.time()
            predictions = predictions.numpy()
            metric.update(predictions, labels)
            latency_list.append(end - start)
            if iteration and idx >= iteration:
                break
        latency = np.array(latency_list[warmup:]).mean() / eval_dataloader.batch_size
        return latency
    from neural_compressor.utils.create_obj_from_config import create_dataloader
    dataloader_args = {
        'batch_size': args.batch_size,
        'dataset': {"ImageRecord": {'root': args.dataset_location}},
        'transform': {'BilinearImagenet': {'height': 224, 'width': 224}},
        'filter': None
    }
    eval_dataloader = create_dataloader('tensorflow', dataloader_args)
    latency = eval_func(eval_dataloader, metric)
    if args.benchmark and args.mode == 'performance':
        print("Batch size = {}".format(eval_dataloader.batch_size))
        print("Latency: {:.3f} ms".format(latency * 1000))
        print("Throughput: {:.3f} images/sec".format(1. / latency))
    acc = metric.result()
    return acc