我发现Theano/Lasagne的所有例子都处理像mnist和cifar10这样的小数据集,它们可以完全加载到内存中。
我的问题是如何编写用于大规模数据集训练的有效代码?具体地说,为了让GPU保持忙碌,准备小批量(包括实时数据增强)的最佳方法是什么?
也许就像用卡夫的ImageDataLayer?例如,我有一个包含所有图像路径和标签的大txt文件。如果能展示一些代码,我们将不胜感激。
非常感谢!
发布于 2016-02-28 04:41:27
如果数据无法装入内存,一个不错的方法是准备小批处理并将它们存储到HDF5文件中,然后在训练时使用该文件。
然而,在进行数据增强时,这确实足够了,因为这是动态完成的。由于Pythons全局解释器锁定,图像不能在GPU繁忙时加载和预处理。据我所知,解决这个问题的最好方法是燃料库。在不同的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
希望这能有所帮助。迈克尔
https://stackoverflow.com/questions/35652757
复制相似问题