我的任务实际上很简单,但我不知道如何实现它。我打算在我的 ML 算法中使用它,但让我们简化示例。假设有一个像下面这样的生成器:
nums = ((i+1) for i in range(4))
以上, 将产生我们1
, 2
,3
和4
.
假设上述生成器返回单个“样本”。我想编写一个生成器方法来批量处理它们。假设批量大小为2
。所以如果这个新方法被调用:
def batch_generator(batch_size):
do something on nums
yield batches of size batch_size
然后这个批处理生成器的输出将是:1
and2
然后3
and 4
。元组/列表无关紧要。重要的是如何退回这些批次。我找到yield from
了 Python 3.3 中引入的这个关键字,但在我的情况下它似乎没有用。
显然,如果我们有5
nums 而不是4
, and batch_size
is 2
,我们将省略第一个生成器的最后一个产生的值。