我有一个非常大的图像数据集(> 50G,一个文件夹中的单个图像)用于训练,为了使图像的加载更加高效,我首先将部分图像加载到RAM中,然后将小批量的图像发送到GPU进行训练。
我想进一步加快数据准备过程,然后再将图像提供给GPU,并正在考虑进行多处理。但是我不确定应该怎么做,有什么想法吗?
为了提高速度,我建议您使用HDF5或LMDB:
我已成功使用ml-pyxis使用LMDB创建深度学习数据集。
它允许创建二进制Blob(LMDB),并且可以非常快速地读取它们。上面的链接带有一些有关如何创建和读取数据的简单示例。包括python generators / iteratos
对于多处理:
我亲自与Keras一起工作,通过使用python生成器,可以使用fit_generator方法对数据进行多重处理。
fit_generator(self, generator, samples_per_epoch,
nb_epoch, verbose=1, callbacks=[],
validation_data=None, nb_val_samples=None,
class_weight={}, max_q_size=10, nb_worker=1,
pickle_safe=False)
使模型适合Python生成器逐批生成的数据。生成器与模型并行运行以提高效率。例如,这使您可以并行地对CPU上的图像进行实时数据增强,从而在GPU上训练模型。您可以在此处找到源代码,并在此处找到文档。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句