首页 > 解决方案 > 我在做机器学习,我被困在列表理解的一条线上

问题描述

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])

标签: pythonmachine-learning

解决方案


在不知道库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]

推荐阅读