【发布时间】:2018-12-11 03:18:23
【问题描述】:
我的任务实际上很简单,但我不知道如何实现它。我打算在我的 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 和 2,然后是 3 和 4。元组/列表无关紧要。重要的是如何退回这些批次。我找到了 Python 3.3 中引入的这个 yield from 关键字,但在我的情况下它似乎没有用。
很明显,如果我们有5 nums 而不是4,并且batch_size 是2,我们将省略第一个生成器的最后一个生成值。
【问题讨论】:
-
参见
itertools文档中的grouper配方。
标签: python python-3.x yield-keyword