@classmethod
def build(cls, args, is_training, batch_size=128, shuffle=True, **kwargs):
    """ Subclass inheriting `Dataset` should implement this function to
        return a `tf.data.Datset`.
        @param args: argparse.Namespace. The argument to the dataset.
        @param is_training: boolean. Indicating whether to load training/tesing
                            data split.
        @param batch_size: int. The batch size.
        @param shuffle: boolean. Whether to shuffle the dataset.
        @param kwargs: dict. Optional arguments for specific dataset.
        @return tuple of (`tf.data.Dataset`, dict): The dict serves as
                meta-information for model to add additional arguments, for
                e.g. the image height and width.
        """
    raise NotImplementedError
