code: def _pre_execution(self, model, calib_dataloader=None, metric=None):
      # get inputs/outputs
      def get_tensors_name(tensors):
          return [tensor.name for tensor in tensors]
  
      if self.cfg.model.inputs is None:
          self.cfg.model.inputs = get_tensors_name(model.inputs)
      if self.cfg.model.outputs is None:
          self.cfg.model.outputs = get_tensors_name(model.outputs)
  
      if calib_dataloader:
          batch_size = 1
          if hasattr(calib_dataloader, "_batch_size"):
              # Batch dataset
              batch_size = calib_dataloader._batch_size
              calib_dataloader = calib_dataloader._input_dataset
          calib_dataloader = Dataloader(calib_dataloader, batch_size)
  
      return model, calib_dataloader, metric
  
file_path: BigDL/python/nano/src/bigdl/nano/deps/neural_compressor/tensorflow/quantization.py
imports: from bigdl.nano.utils.common import invalidInputError
  from ..core import BaseQuantization
  from .metric import TensorflowINCMetric
  from .model import KerasQuantizedModel
  from .utils import Dataloader
  from bigdl.nano.utils.common import compare_version
  import operator
label_desc: Use image node_id 2 for calling the TensorflowQuantization obj's underlying member method code with example usage: obj._pre_execution(model, calib_dataloader, metric) and returns: model,  calib_dataloader,  metric, unknown