gpt4 book ai didi

Keras:flow_from_directory 在 fit_generator 调用期间保存了太多图像

转载 作者:行者123 更新时间:2023-12-01 11:15:34 25 4
gpt4 key购买 nike

我有以下火车/验证代码:

# we create two instances with the same arguments
image_data_gen_args = dict(rotation_range=90.0, rescale=1/255.0)
mask_data_gen_args = dict(rotation_range=90.0, rescale=1/255.0)
train_image_datagen = ImageDataGenerator(**image_data_gen_args)
train_mask_datagen = ImageDataGenerator(**mask_data_gen_args)
validation_image_datagen = ImageDataGenerator()
validation_mask_datagen = ImageDataGenerator(**mask_data_gen_args)

# Provide the same seed flow methods
seed = 1

train_image_generator = train_image_datagen.flow_from_directory(
abs_parent_train_images_path,
class_mode=None,
seed=seed,
follow_links=True, # we symlinked the images to a temp directory
batch_size=1,
shuffle=True,
target_size=(image_size, image_size))

train_mask_generator = train_mask_datagen.flow_from_directory(
abs_parent_train_masks_path,
class_mode=None,
seed=seed,
batch_size=1,
shuffle=True,
target_size=(image_size, image_size),
color_mode="grayscale",
save_to_dir=abs_parent_train_masks_path)

validation_image_generator = validation_image_datagen.flow_from_directory(
abs_parent_test_images_path,
class_mode=None,
seed=seed,
follow_links=True, # we symlinked the images to a temp directory
batch_size=1,
shuffle=True,
target_size=(image_size, image_size))

validation_mask_generator = validation_mask_datagen.flow_from_directory(
abs_parent_test_masks_path,
class_mode=None,
seed=seed,
batch_size=1,
shuffle=True,
target_size=(image_size, image_size),
color_mode="grayscale",
save_to_dir=abs_parent_test_masks_path)

# combine generators into one which yields image and masks
train_generator = itertools.izip(train_image_generator, train_mask_generator)
validation_generator = itertools.izip(validation_image_generator, validation_mask_generator)

# test generators' saving
for idx, pair in enumerate(validation_generator):
print(idx)
print('iterating')
if idx >= 0:
break

modeler.model.fit_generator(generator=train_generator,
steps_per_epoch=1,
validation_data=validation_generator,
validation_steps=1,
epochs=1,
callbacks=callbacks_list,
verbose=1)

四个训练/验证目录在所需的 directory/subdirectory/image 中有 1 个图像或掩码。组织 flow_from_directory .所以目录结构被认为不是问题。 kera 在训练期间的打印输出进一步证实了这一点:

Found 1 images belonging to 1 classes.
Found 1 images belonging to 1 classes.
Found 1 images belonging to 1 classes.
Found 1 images belonging to 1 classes.

我注意到 fit_generator每次列车运行保存多张图像。
从, epochs、steps_per_epoch、validation_steps 和图像/掩码的数量(用于训练/验证)都等于 1 ,我会完全预料到 要在调用 fit_generator 期间保存的图像.然而,这个数字似乎是 9 (相同的图像,但每个图像都有不同的旋转)。

有趣的是,这似乎是 fit_generator 的结果而不是 ImageDataGenerator类,因为我可以在 for 之后断点循环迭代 validation_generator并找到在 for 的每次迭代中保存的准确图像循环(如预期)。

有什么我做错了吗?
这是预期的行为(以及为什么)?

谢谢!

最佳答案

fit_generator function 有两个额外的参数,它们可能是观察到的行为的原因:

  • workers默认值 =1意味着将使用额外的线程来加载图像。该线程将从提供的生成器中获取图像并将它们放入队列中。
  • max_queue_size默认值 =10是这个队列的最大长度。当调用 fit_generator 时,入队线程将停止。返回,但在它会继续用图像填充队列之前,即使其中一些不再需要。
  • 关于Keras:flow_from_directory 在 fit_generator 调用期间保存了太多图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49267020/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com