使用Theano / Lasagne培训ImageNet等大型数据集的最佳实践?

时间:2016-02-26 13:16:51

标签: theano deep-learning lasagne

我发现Theano / Lasagne的所有例子都涉及像mnist和cifar10这样的小数据集,可以完全加载到内存中。

我的问题是如何编写有效的大规模数据集培训代码? 具体来说,准备小批量(包括实时数据增强)以保持GPU忙碌的最佳方法是什么?

也许喜欢使用CAFFE的ImageDataLayer? 例如,我有一个大的txt文件,其中包含所有图像路径和标签。 很高兴能够展示一些代码。

非常感谢!

1 个答案:

答案 0 :(得分:3)

如果数据不适合内存,一个好方法是准备小批量并将它们存储到HDF5文件中,然后在训练时使用。

但是,这在进行数据扩充时就足够了,因为这是动态完成的。由于Pythons全局解释器锁定,在GPU忙时,图像无法加载和预先处理。 我所知道的最好的方法是Fuel库。 Fuel在不同的python进程中加载​​和预处理小批量,然后通过TCP套接字将它们传输到训练过程: http://fuel.readthedocs.org/en/latest/server.html#data-processing-server

它还提供了一些预处理数据的功能,例如缩放和平均减法: http://fuel.readthedocs.org/en/latest/overview.html#transformers-apply-some-transformation-on-the-fly

希望这会有所帮助。 迈克尔