Tensorflow Keras发电机无缘无故地保持循环

Tensorflow Keras发电机无缘无故地保持循环,tensorflow,keras,Tensorflow,Keras,我有一台凯拉斯发电机 train_datagen = ImageDataGenerator(rotation_range=360, horizontal_flip=True, vertical_flip=True, validation_split=0.15,

我有一台凯拉斯发电机

train_datagen = ImageDataGenerator(rotation_range=360,
                                       horizontal_flip=True,
                                       vertical_flip=True,
                                       validation_split=0.15,
                                       preprocessing_function=preprocess_image, 
                                       rescale=1 / 128.)

left_test_generator=train_datagen.flow_from_dataframe(dataframe=df_test_left, 
                                                    directory = test_images_path,
                                                    x_col="pic_id",
                                                    target_size=(IMG_WIDTH, IMG_HEIGHT),
                                                    batch_size=1,
                                                    shuffle=False, 
                                                    class_mode=None, seed=SEED) 
左_测试_发生器的长度为500

但是如果我运行这个

for image_count, image in enumerate(right_test_generator):
    print(image_count)
这将打印大于8000的图像计数。
这是怎么回事?有什么想法吗?

这就是生成器的工作方式,它们内部有一个无限循环,可以生成成批的数据,
\uuu len\uuu
方法仅供参考,以了解到达一个历元需要对生成器进行多少次调用


因此,如果您想从生成器中获取特定数量的样本,您不应该像那样对其进行迭代,而是使用具有特定迭代次数的for循环。

生成器就是这样工作的,在内部,它们有一个无限循环,可以生成批量数据,
\uuuu len\uuuu
方法仅供参考,以了解达到一个历元需要多少对生成器的调用

因此,如果您希望从生成器中获取特定数量的样本,则不应该像那样对其进行迭代,而是使用具有特定迭代次数的for循环