class_docstr: FVQA Teacher, which loads the json VQA data and implements its own `act` method for
  interacting with student agent.
  
  Use "fvqa:split:X" to choose between splits 0-4 (inclusive), or just "fvqa" to use
  the default split (0).
code: def act(self):
      if self.asked_question:
          self.asked_question = False
          action = {
              "text": "Which fact supports this answer?",
              "episode_done": True,
          }
          if self.datatype.startswith("train"):
              action["labels"] = self.lastY[1]
          if (
              self.datatype != "train"
              and self.episode_idx + self.step_size
              >= self.num_episodes()
          ):
              self.epochDone = True
          return action
  
      if self.datatype == "train":
          self.episode_idx = random.randrange(self.len)
      else:
          self.episode_idx = (
              self.episode_idx + self.step_size
          ) % self.num_episodes()
  
      self.asked_question = True
      qa = self.ques[self.episode_idx]
      question = qa["question"]
      img_path = self.image_path + qa["img_file"]
  
      action = {
          "image": self.image_loader.load(img_path),
          "text": question,
          "episode_done": False,
      }
  
      human_readable = (
          qa["fact_surface"].replace("[", "").replace("]", "")
      )
      self.lastY = [[qa["answer"]], [human_readable]]
  
      if self.datatype.startswith("train"):
          action["labels"] = self.lastY[0]
  
      return action
  
imports: from parlai.core.image_featurizers import ImageLoader
  from parlai.core.metrics import TeacherMetrics
  from parlai.core.teachers import Teacher
  from parlai.utils.io import PathManager
  from .build import build
  import json
  import random
  import os
label_desc: Use image node_id 8 for calling the SplitTeacher obj's underlying member method code with example usage: obj.act() and returns: action, action