class_docstr: Dataset iterator that serially reads the examples.
  
  This is a simple implementation of :class:`~chainer.dataset.Iterator`
  that just visits each example in either the order of indexes or a shuffled
  order.
  
  To avoid unintentional performance degradation, the ``shuffle`` option is
  set to ``True`` by default. For validation, it is better to set it to
  ``False`` when the underlying dataset supports fast slicing. If the
  order of examples has an important meaning and the updater depends on the
  original order, this option should be set to ``False``.
  
  This iterator saves ``-1`` instead of ``None`` in snapshots since some
  serializers do not support ``None``.
  
  Args:
      dataset: Dataset to iterate.
      batch_size (int): Number of examples within each batch.
      repeat (bool): If ``True``, it infinitely loops over the dataset.
          Otherwise, it stops iteration at the end of the first epoch.
      shuffle (bool): If ``True``, the order of examples is shuffled at the
          beginning of each epoch. Otherwise, examples are extracted in the
          order of indexes. If ``None`` and no ``order_sampler`` is given,
          the behavior is the same as the case with ``shuffle=True``.
      order_sampler (callable): A callable that generates the order
          of the indices to sample in the next epoch when a epoch finishes.
          This function should take two arguments: the current order
          and the current position of the iterator.
          This should return the next order. The size of the order
          should remain constant.
          This option cannot be used when ``shuffle`` is not ``None``.
class_docstr_tok: ["Dataset","iterator","that","serially","reads","the","examples",".","This","is","a","simple","implementation","of",":","class",":","`","~chainer.dataset.Iterator","`","that","just","visits","each","example","in","either","the","order","of","indexes","or","a","shuffled","order",".","To","avoid","unintentional","performance","degradation",",","the","``","shuffle","``","option","is","set","to","``","True","``","by","default",".","For","validation",",","it","is","better","to","set","it","to","``","False","``","when","the","underlying","dataset","supports","fast","slicing",".","If","the","order","of","examples","has","an","important","meaning","and","the","updater","depends","on","the","original","order",",","this","option","should","be","set","to","``","False","``",".","This","iterator","saves","``","-1","``","instead","of","``","None","``","in","snapshots","since","some","serializers","do","not","support","``","None","``",".","Args",":","dataset",":","Dataset","to","iterate",".","batch_size","(","int",")",":","Number","of","examples","within","each","batch",".","repeat","(","bool",")",":","If","``","True","``",",","it","infinitely","loops","over","the","dataset",".","Otherwise",",","it","stops","iteration","at","the","end","of","the","first","epoch",".","shuffle","(","bool",")",":","If","``","True","``",",","the","order","of","examples","is","shuffled","at","the","beginning","of","each","epoch",".","Otherwise",",","examples","are","extracted","in","the","order","of","indexes",".","If","``","None","``","and","no","``","order_sampler","``","is","given",",","the","behavior","is","the","same","as","the","case","with","``","shuffle=True","``",".","order_sampler","(","callable",")",":","A","callable","that","generates","the","order","of","the","indices","to","sample","in","the","next","epoch","when","a","epoch","finishes",".","This","function","should","take","two","arguments",":","the","current","order","and","the","current","position","of","the","iterator",".","This","should","return","the","next","order",".","The","size","of","the","order","should","remain","constant",".","This","option","can","not","be","used","when","``","shuffle","``","is","not","``","None","``","."]
code: def previous_epoch_detail(self):
      # use -1 instead of None internally.
      if self._previous_epoch_detail < 0:
          return None
      return self._previous_epoch_detail
  
file_path: chainer/chainer/iterators/serial_iterator.py
imports: from __future__ import division
  import numpy
  from chainer.dataset import iterator
  from chainer.iterators import _statemachine
  from chainer.iterators.order_samplers import ShuffleOrderSampler
label_desc: Use image node_id 7 for calling the SerialIterator obj's underlying member method code with example usage: obj.previous_epoch_detail() and returns: self, None