batches method

Iterable<List<T>> batches()

Lazily produce one full pass over the dataset as batches.

Implementation

Iterable<List<T>> batches() sync* {
  final n = dataset.length;
  final order = List<int>.generate(n, (i) => i);
  if (shuffle) order.shuffle(_rng);
  for (int start = 0; start < n; start += batchSize) {
    final end = math.min(start + batchSize, n);
    if (dropLast && end - start < batchSize) break;
    yield [for (int k = start; k < end; k++) dataset[order[k]]];
  }
}