class_docstr: A search space consists of HyperPreprocessors.
  
  # Arguments
      inputs: a list of lists of HyperPreprocessors.
      outputs: a list of lists of HyperPreprocessors.
class_docstr_tok: ["A","search","space","consists","of","HyperPreprocessors",".","#","Arguments","inputs",":","a","list","of","lists","of","HyperPreprocessors",".","outputs",":","a","list","of","lists","of","HyperPreprocessors","."]
code: def _build_preprocessors(hp, hpps_lists, dataset):
      sources = data_utils.unzip_dataset(dataset)
      preprocessors_list = []
      for source, hpps_list in zip(sources, hpps_lists):
          data = source
          preprocessors = []
          for hyper_preprocessor in hpps_list:
              preprocessor = hyper_preprocessor.build(hp, data)
              preprocessor.fit(data)
              data = preprocessor.transform(data)
              preprocessors.append(preprocessor)
          preprocessors_list.append(preprocessors)
      return preprocessors_list
  
imports: import tensorflow
  from tensorflow import keras
  from tensorflow import nest
  from autokeras import preprocessors
  from autokeras.engine import hyper_preprocessor
  from autokeras.engine import preprocessor
  from autokeras.utils import data_utils
  from autokeras.utils import io_utils
label_desc: Use image node_id 2 for calling the HyperPipeline obj's underlying member method code with example usage: obj._build_preprocessors(hp, hpps_lists, dataset) and returns: preprocessors_list