首页 文章

使用Keras图像生成器进行数据增强使得训练非常缓慢

提问于
浏览
0

我有一个大数据集 . 数据大约是100k . 我使用 ImageDataGenerator 进一步扩充了数据 . 但它使训练过程非常缓慢 . 没有keras图像生成器功能,训练过程大约需要3分钟,但是当我使用ImageDataGenerator功能时,花了大约3个小时 . 我用这个代码进行图像增强 . 如何提高性能?

datagen = ImageDataGenerator(horizontal_flip=True,
                             vertical_flip=True,
                             featurewise_center=True,
                             featurewise_std_normalization=True,
                             zoom_range=0.2,
                             rotation_range=90.)
datagen.fit(data)
epochs = 50

model.fit_generator(datagen.flow(data, label, batch_size=128),
                    steps_per_epoch=patches.shape[0],
                    epochs=epochs)

1 回答

  • 0

    这里有几件事要尝试 .

    Preprocess Input

    我不熟悉使用此参数 featurewise_std_normalization=True ,但我会尝试使用预处理功能 . 如果它's calculating this transformation on every batch then it'可能消耗了大量资源 . 您可以在训练之前转换所有数据,以避免不断计算 .

    Reduce Dimensionality

    如果图像大小超过224x224,则可以缩小图像的尺寸 . 在很多情况下你甚至可以尝试变小 .

    Reduce Steps per Epoch

    看看每个时期的步骤 . 我不确定现在根据上面的代码输入什么(patches.shape [0])但如果训练那么慢,我不会比data_size // batch_size高得多(你可以更高,因为它增加了数据但需要更多时间) .

    Upgrade Equipment 如果这些都不起作用,我已经有了一个 . 如果这是在CPU上完成的,那就解释了它 . 图像变换是CPU的相对较大的矩阵计算 .

相关问题