У вас есть два бесконечных генератора, и вы пытаетесь zip()
их, а затем Yeild
их одновременно, что недопустимо, допустимо, возможно, это неправильный термин, если вы используете zip, вы пытаетесь получить все данныесразу, что почти гарантирует вам нехватку памяти, проверьте эту ссылку для получения дополнительной информации https://pybit.es/generators.html
Для этого вам лучше использовать функцию yield.
Необработанная реализация этогоis
def zipper(Xgen, Ygen):
while True:
yield (Xgen.next(), Ygen.next())
Это даст X и Y один за другим, а не все сразу, что должно держать память, используемую в проверке.
Редактировать Теоретически код нижедолжно сработать, если это не так, я создам чат, и мы разберемся с этим.
def create_all_data(all_data, items_size, window_size, shuffle):
all_couples = []
for item_list in all_data:
couples = create_data(item_list, window_size, shuffle)
all_couples.extend(couples)
if all_couples:
X, Y = zip(*all_couples)
X = np_utils.to_categorical(X, items_size+1)
Y = np_utils.to_categorical(Y, items_size+1)
yield (X.next(),Y.next())
Причина, по которой это возможно, заключается в том, что для приведенного выше кода я предполагаю, что all_data создает бесконечное числопоток, и, таким образом, пытался передать его разбить на график через генератор по одному.