def _problems_to_register():
  """Problems for which we want to create datasets.

  To avoid a long file with class definition boilerplate for each problem, we
  are dynamically creating and registering problems. The set of problems to
  register is defined by this function. See below for the code that creates the
  classes and registers the problems.

  Returns:
    A dictionary mapping problem name to babi_task_id.
  """
  all_problems = {}

  # First define some problems using only concrete characters (i.e., no meta
  # characters).
  problems_on_different_tasks = {
      "AllTasks": "qa0",
      "Task1": "qa1",
      "Task2": "qa2",
      "Task3": "qa3",
      "Task4": "qa4",
      "Task5": "qa5",
      "Task6": "qa6",
      "Task7": "qa7",
      "Task8": "qa8",
      "Task9": "qa9",
      "Task10": "qa10",
      "Task11": "qa11",
      "Task12": "qa12",
      "Task13": "qa13",
      "Task14": "qa14",
      "Task15": "qa15",
      "Task16": "qa16",
      "Task17": "qa17",
      "Task18": "qa18",
      "Task19": "qa19",
      "Task20": "qa20",
  }
  all_problems.update(problems_on_different_tasks)

  return all_problems
Problems for which we want to create datasets.

  To avoid a long file with class definition boilerplate for each problem, we
  are dynamically creating and registering problems. The set of problems to
  register is defined by this function. See below for the code that creates the
  classes and registers the problems.

  Returns:
    A dictionary mapping problem name to babi_task_id.
  
tensor2tensor/data_generators/babi_qa.py