python - 我在做机器学习,我被困在列表理解的一条线上
问题描述
image_gen = ImageDataGenerator(rescale=1./255, rotation_range=45)
train_data_gen = image_gen.flow_from_directory(batch_size=BATCH_SIZE,
directory=train_dir,
shuffle=True,
target_size=(IMG_SHAPE, IMG_SHAPE))
**augmented_images = [train_data_gen[0][0][0] for i n range(5)]**
plotImages(augmented_images)
我无法理解为什么绘制图像我们得到 5 个不同的图像,因为我们使用相同的索引。这 5 个图像不是相同的吗?(train_data_gen[0][0][0])
解决方案
在不知道库ImageDataGenerator
来自哪个库的情况下无法确定地说,但类的名称表明它是一个生成器。因此,重复访问train_data_gen[0][0][0]
可能会在每次访问时产生不同的值。
作为该想法的说明:
from random import randint
class MyIndexedGenerator:
@staticmethod
def random_generator():
while True:
yield randint(1, 10)
def __init__(self):
self.values = self.random_generator()
def __getitem__(self, index):
return next(self.values) + index
example_gen = MyIndexedGenerator()
result = [example_gen[0] for i in range(5)]
print(result)
可以产生(例如):
[7, 1, 8, 7, 7]
推荐阅读
- sockets - sin_addr、sin_family 等中的“sin”是什么意思?
- c++ - C++ 编译器可以规范化 Unicode 标识符吗?
- doxygen - Doxygen->Sphinx->Pygments 代码块词法分析器选择?
- python - 使用 python 写入 SQL 表的最简单方法
- mysql - 从 R 插入 MySQL
- java - Apache POI 无法将合并区域添加到现有合并区域
- r - R shinyWidgets pickerInput:全选时如何不过滤数据框
- arrays - 如何展平数组并从 combineLatest(...) 的结果中删除空数组?
- javascript - 当用户在 Javascript 中键入时,如何将数字格式化为货币
- tensorflow - 如何使用自己的 Tensorflow 代码创建 Sagemaker 培训作业,而无需构建容器?