'Generator that can be used to iterate over this dataset.
Yields:
tuple : the next minibatch of data.
Note:
The second element of the tuple is itself a tuple (t,m) with:
t: the actual target as generated by the task object
m: the output mask to account for the difference between
the seq_length for this minibatch and the max seq_len,
which is also the number of columns in X,t, and m'

def __iter__(self):

    self.batch_index = 0
    while (self.batch_index < self.nbatches):
        self.task.synthesize(self.dev_X, self.dev_y, self.mask)
        self.batch_index += 1
        (yield (self.dev_X, (self.dev_y, self.mask)))
