Моя задача на самом деле довольно проста, но я не могу понять, как ее достичь. Я собираюсь использовать это в своем алгоритме 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
. Кортежи / списки не имеет значения. Важно то, как вернуть эти партии. Я нашел это ключевое слово yield from
, которое было введено в Python 3.3, но, похоже, в моем случае оно бесполезно.
И, очевидно, если бы у нас было 5
чисел вместо 4
, а batch_size
равно 2
, мы бы пропустили последнее полученное значение из первого генератора.