class_docstr: Dataset for CLEVR. CLEVR is a reasoning task where given an image with some
  3D shapes you have to answer basic questions.
  
  Args:
      dataset_type (str): type of dataset, train|val|test
      config (DictConfig): Configuration Node representing all of the data necessary
                           to initialize CLEVR dataset class
      data_folder: Root folder in which all of the data will be present if passed
                   replaces default based on data_dir and data_folder in config.
class_docstr_tok: ["Dataset","for","CLEVR",".","CLEVR","is","a","reasoning","task","where","given","an","image","with","some","3D","shapes","you","have","to","answer","basic","questions",".","Args",":","dataset_type","(","str",")",":","type","of","dataset",",","train|val|test","config","(","DictConfig",")",":","Configuration","Node","representing","all","of","the","data","necessary","to","initialize","CLEVR","dataset","class","data_folder",":","Root","folder","in","which","all","of","the","data","will","be","present","if","passed","replaces","default","based","on","data_dir","and","data_folder","in","config","."]
code: def _get_vocab_path(self, attribute):
      return os.path.join(
          self._data_dir,
          _CONSTANTS["vocabs_folder"],
          _TEMPLATES["vocab_file_template"].format(
              self.dataset_name, attribute
          ),
      )
  
file_path: mmf/mmf/datasets/builders/clevr/dataset.py
imports: import json
  import os
  import numpy
  import torch
  from mmf.common.sample import Sample
  from mmf.datasets.base_dataset import BaseDataset
  from mmf.utils.distributed import is_main, synchronize
  from mmf.utils.general import get_mmf_root
  from mmf.utils.text import tokenize, VocabFromText
  from PIL import Image
label_desc: Use image node_id 4 for calling the CLEVRDataset obj's underlying member method code with example usage: obj._get_vocab_path(attribute) and returns: os