我有一个大数据集 . 数据大约是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 回答
这里有几件事要尝试 .
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的相对较大的矩阵计算 .