def __init__(self, sym, segdb, config, batch_size=1, crop_height = 768, crop_width = 1024, shuffle=False, ctx=None, work_load_list=None):
        """
        This Iter will provide seg data to Deeplab network
        :param sym: to infer shape
        :param segdb: must be preprocessed
        :param config: config file
        :param batch_size: must divide BATCH_SIZE(128)
        :param crop_height: the height of cropped image
        :param crop_width: the width of cropped image
        :param shuffle: bool
        :param ctx: list of contexts
        :param work_load_list: list of work load
        :return: DataLoader
        """
        super(TrainDataLoader, self).__init__()

        # save parameters as properties
        self.sym = sym
        self.segdb = segdb
        self.config = config
        self.batch_size = batch_size
        if self.config.TRAIN.ENABLE_CROP:
            self.crop_height = crop_height
            self.crop_width = crop_width
        else:
            self.crop_height = None
            self.crop_width = None

        self.shuffle = shuffle
        self.ctx = ctx

        if self.ctx is None:
            self.ctx = [mx.cpu()]
        self.work_load_list = work_load_list

        # infer properties from segdb
        self.size = len(segdb)
        self.index = np.arange(self.size)

        # decide data and label names
        self.data_name = ['data']
        self.label_name = ['label']

        # status variable for synchronization between get_data and get_label
        self.cur = 0
        self.batch = None
        self.data = None
        self.label = None

        # init multi-process pool
        self.pool = Pool(processes = len(self.ctx))

        # get first batch to fill in provide_data and provide_label
        self.reset()
        self.get_batch_parallel()
        random.seed()

        This Iter will provide seg data to Deeplab network
        :param sym: to infer shape
        :param segdb: must be preprocessed
        :param config: config file
        :param batch_size: must divide BATCH_SIZE(128)
        :param crop_height: the height of cropped image
        :param crop_width: the width of cropped image
        :param shuffle: bool
        :param ctx: list of contexts
        :param work_load_list: list of work load
        :return: DataLoader
        
deeplab/core/loader.py