theano - 使用 Theano/Lasagne 在 ImageNet 等大规模数据集上进行训练的最佳实践?

标签 theano deep-learning lasagne

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

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

也许喜欢使用 CAFFE 的 ImageDataLayer? 例如,我有一个很大的 txt 文件,其中包含所有图像路径和标签。 显示一些代码将不胜感激。

非常感谢!

最佳答案

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

但是,这在进行数据扩充时就足够了,因为这是在运行中完成的。由于 Python 的全局解释器锁,图像无法在 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

希望这对您有所帮助。 迈克尔

关于theano - 使用 Theano/Lasagne 在 ImageNet 等大规模数据集上进行训练的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35652757/

相关文章:

tensorflow - 如何在我的代码中使用张量核心而不是 cuda 核心?

python - 神经网络模型

machine-learning - 使用 Lasagne 的 Adam 实现进行概率矩阵分解是否有希望?

python - 为什么我无法在 theano 中评估 reshape 的张量变量?

tensorflow - 打印出网络架构中每一层的形状

theano - 使用深度学习库 Keras 时出现 AssertionError

python - 使用 Keras 获取模型输出 w.r.t 权重的梯度

python - 正确使用 PyTorch 的 non_blocking=True 进行数据预取

c++ - 如何在烤宽面条中打印隐藏层的输出