Keras - steps_per_epoch计算与ImageDataGenerator输出不匹配

问题描述 投票:0回答:1

我正在与Keras进行基本的分类任务,我似乎偶然发现了一个需要帮助的问题。

我有200个样本用于训练,100个用于验证,我打算使用ImageDataGenerator来增加我的任务的训练样本数量。我想确保传递给fit_generator()的训练图像总数。

我知道steps_per_epoch定义了我们从生成器获得的批次总数,理想情况下它应该是样本数除以批量大小。

然而,这是我不能加起来的地方。这是我的代码片段:

num_samples = 200
batch_size = 10
gen = ImageDataGenerator(horizontal_flip = True,
                     vertical_flip = True,
                     width_shift_range = 0.1,
                     height_shift_range = 0.1,
                     zoom_range = 0.1,
                     rotation_range = 10
                    )
x,y = shuffle(img_data,img_label, random_state=2)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.333, random_state=2)
generator = gen.flow(x_train, y_train, save_to_dir='check_images/sample_run')
new_network.fit_generator(generator, steps_per_epoch=len(x_train)/batch_size, validation_data=(x_test, y_test), epochs=1, verbose=2)

我正在保存增强图像,以查看图像如何从ImageDataGenerator中转出,并确定从中生成的图像数量。

在单个纪元运行此代码后,我的目录中有600张图片,这是我无法到达的数字,或者我犯了一个错误。

任何帮助我理解本代码中的计算的人都将深表感谢。有没有人遇到类似的问题?

TIA

python-3.x keras deep-learning classification generator
1个回答
0
投票

gen.flow()在内部创建一个NumpyArrayIterator,然后使用Iterator计算steps_per_epoch。理想情况下,如果steps_per_epoch为None,则计算以steps_per_epoch =(x.shape [0] + batch_size - 1)// batch_size完成,该计算与计算大致相同。

不确定为什么你会看到更多的样品。你可以计算x.shape [0]并仔细检查你的代码是否符合你的解释?

© www.soinside.com 2019 - 2024. All rights reserved.