数据集的批量迭代器(Batch Iterator)是一种常用的数据处理方法,用于将数据集分为多个批次,每个批次包含固定数量的数据。 本题也是mini-batch梯度下降法的关键步骤,关键思想可以参考梯度下降部分。

标准代码如下

def batch_iterator(X, y=None, batch_size=64):
    n_samples = X.shape[0]
    batches = []
    for i in np.arange(0, n_samples, batch_size):
        begin, end = i, min(i+batch_size, n_samples)
        if y is not None:
            batches.append([X[begin:end], y[begin:end]])
        else:
            batches.append( X[begin:end])
    return batches