Just to add my 2 cents, I observed that creating minibatches using `from sklearn.utils import gen_even_slices` with `batch_slices = list(gen_even_slices(n_batches * self.batch_size, n_batches))`, is much faster than `X[inds[minibatch::n_batches]]`,

This is illustrated here, https://gist.github.com/amueller/2061456

The performance increase was spectacular!