code: def _read_data_legacy(prefix, batch_size):
      
      prefix = prefix.replace("\\", "/")
      folder = "/".join(prefix.split("/")[:-1])
      phase = prefix.split("/")[-1]
      config = json.load(open(prefix + '_config.json'))
      num_threads = config["num_threads"]
  
      filenames = [folder + "/" + f for f in listdir(folder) if isfile(join(folder, f)) and phase in f and not "config.json" in f]
  
      # Create a tf object for the filename list and the readers.
      filename_queue = tf.train.string_input_producer(filenames)
      readers = [_read_tf_record(filename_queue, config) for _ in range(num_threads)]
  
      batch_dict = tf.train.shuffle_batch_join(
          readers,
          batch_size=batch_size,
          capacity=10 * batch_size,
          min_after_dequeue=5 * batch_size
      )
  
      # Add batch dimension to feature and label shape
  
      feature_batch = {}
      label_batch = {}
      for k in batch_dict.keys():
          shape = tuple([batch_size] + list(config[k]["shape"]))
          tensor = tf.reshape(batch_dict[k], shape, name="input/"+phase+"/" + k + "_reshape")
          if "feature_" in k:
              feature_batch["_".join(k.split("_")[1:])] = tensor
          if "label_" in k:
              label_batch["_".join(k.split("_")[1:])] = tensor
  
      return feature_batch, label_batch
docs: Loads a tf record as tensors you can use.
      :param prefix: The path prefix as defined in the write data method.
      :param batch_size: The batch size you want for the tensors.
      :return: A feature tensor dict and a label tensor dict.