class_docstr: A general QA container to take Q&A dataset, which has already been
  vectorized and create a data iterator to feed data to training.
class_docstr_tok: ["A","general","QA","container","to","take","Q","&","A","dataset",",","which","has","already","been","vectorized","and","create","a","data","iterator","to","feed","data","to","training","."]
docstr: Generator that can be used to iterate over this dataset.
  
  Yields:
      tuple : the next minibatch of data.
docstr_tok: ["Generator","that","can","be","used","to","iterate","over","this","dataset",".","Yields",":","tuple",":","the","next","minibatch","of","data","."]
code: def __iter__(self):
      """
      Generator that can be used to iterate over this dataset.
  
      Yields:
          tuple : the next minibatch of data.
      """
      self.batch_index = 0
      shuf_idx = self.be.rng.permutation(len(self.story))
      self.story = self.story[shuf_idx]
      self.query = self.query[shuf_idx]
      self.answer = self.answer[shuf_idx]
  
      while self.batch_index < self.nbatches:
          batch = slice(
              self.batch_index * self.be.bsz,
              (self.batch_index + 1) * self.be.bsz,
          )
          story_tensor = self.be.array(self.story[batch].T.copy())
          query_tensor = self.be.array(self.query[batch].T.copy())
          answer_tensor = self.be.array(self.answer[batch].T.copy())
  
          self.batch_index += 1
  
          yield (story_tensor, query_tensor), answer_tensor
  
imports: from builtins import map
  import numpy
  import os
  import re
  import tarfile
  from neon import logger
  from neon.data.dataiterator import NervanaDataIterator
  from neon.data.datasets import Dataset
  from neon.data.text_preprocessing import pad_sentences
  from functools import reduce
label_desc: Use image node_id 2 for calling the QA obj's underlying member method code with example usage: obj.__iter__() without return types