code: def setup_data(self, path):
      print("loading: " + path)
      with PathManager.open(path) as data_file:
          clevr = json.load(data_file)
  
      image_file = None
      for ques in clevr["questions"]:
          # episode done if first question or image changed
          new_episode = ques["image_filename"] != image_file
  
          # only show image at beginning of episode
          image_file = ques["image_filename"]
          img_path = None
          if new_episode:
              img_path = os.path.join(self.images_path, image_file)
  
          question = ques["question"]
          answer = [ques["answer"]] if ques["split"] != "test" else None
          yield (question, answer, None, None, img_path), new_episode
  
file_path: ParlAI/parlai/tasks/clevr/agents.py
imports: from parlai.core.teachers import DialogTeacher
  from parlai.utils.io import PathManager
  from .build import build
  import json
  import os
label_desc: Use image node_id 3 for calling the DefaultTeacher obj's underlying member method code with example usage: obj.setup_data(path) without return types