class_docstr: Wraps over another `Sampler` and return mini-batches of samples.
  
  Parameters
  ----------
  sampler : Sampler
      The source Sampler.
  batch_size : int
      Size of mini-batch.
  last_batch : {'keep', 'discard', 'rollover'}
      Specifies how the last batch is handled if batch_size does not evenly
      divide sequence length.
  
      If 'keep', the last batch will be returned directly, but will contain
      less element than `batch_size` requires.
  
      If 'discard', the last batch will be discarded.
  
      If 'rollover', the remaining elements will be rolled over to the next
      iteration.
  
  Examples
  --------
  >>> sampler = gluon.data.SequentialSampler(10)
  >>> batch_sampler = gluon.data.BatchSampler(sampler, 3, 'keep')
  >>> list(batch_sampler)
  [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]]
code: def __init__(self, sampler, batch_size, last_batch="keep"):
      self._sampler = sampler
      self._batch_size = batch_size
      self._last_batch = last_batch
      self._prev = []
  
imports: import numpy
label_desc: Use image node_id 1 to create a new BatchSampler object from inherited base classes: Sampler with example: obj = BatchSampler(sampler, batch_size, last_batch)