tensorflow - Keras Generator 无缘无故地循环
问题描述
我有一个 keras 生成器
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)
left_test_generator 的长度是 500
但是如果我运行这个
for image_count, image in enumerate(right_test_generator):
print(image_count)
这将打印大于 8000 的 image_count。这是怎么回事?有任何想法吗?
解决方案
这就是生成器的工作方式,它们在内部有一个无限循环,可以生成一批数据,该__len__
方法仅供参考,以了解需要多少次调用生成器才能达到一个时期。
因此,如果您想从生成器中获取特定数量的样本,则不应像那样对其进行迭代,而应使用具有特定迭代次数的 for 循环。
推荐阅读
- javascript - 如何在 mLab 中导入和使用 firebase 导出的数据库?
- visual-studio-code - VSCode 扩展。如何在右键单击时选择树视图项
- macos - root用户不能删除文件
- android - Android 显示错误:尝试在空对象引用上调用接口方法“int java.util.List.size()”
- camera - 如何将相机输出更改为屏幕显示?
- asynchronous - c# Ftp 文件上传异步 | 同步
- google-api - 如何在没有 oAuth2.0 的情况下使用带有驱动器 API 密钥的谷歌驱动器文件列表 API?
- node.js - How to send http(s) requests with Node.js to a Node.js server hosted with LocalTunnel
- java - java.lang.NoSuchMethodError: org.apache.poi.util.POILogger.log(ILjava/lang/Object;)V
- c - 使用 MPI_Send 和 MPI_Recv 实现 MPI_Scatter 的问题