到目前为止,我找到的每个张量流教程都是通过首先将训练/验证/测试图像加载到内存中然后处理它们来实现的。有人有关于将图像和标签流式传输到张量流的指南或建议吗?我有很多图像存储在不同的服务器上,我想将这些图像流式传输到张量流中,而不是将图像直接保存在我的计算机上。
谢谢你!
张量流确实有Queues https://www.tensorflow.org/versions/r0.9/how_tos/threading_and_queues/index.html#threading-and-queues,它支持流式传输,因此您不必将完整数据加载到内存中。但是,是的,默认情况下它们仅支持从同一服务器上的文件读取。您遇到的真正问题是,您想从其他服务器加载内存数据。我可以想到以下方法来做到这一点:
- 使用 REST 服务公开您的图像。用 python 编写自己的排队机制并读取此数据(使用 Urllib 或其他东西)并将其输入到 Tensorflow占位符 https://www.tensorflow.org/versions/r0.8/tutorials/mnist/pros/index.html#placeholders.
您也可以使用 Tensorflow 队列,而不是使用 python 队列(如上所述)(请参阅此answer https://stackoverflow.com/questions/34594198/how-to-prefetch-data-using-a-custom-python-function-in-tensorflow/34596212#34596212),虽然稍微复杂一些。优点是,与普通的 python 多线程队列相比,tensorflow 队列可以使用多个内核,从而提供更好的性能。
使用网络挂载来欺骗您的操作系统,使其相信数据位于同一台计算机上。
另外,请记住,使用这种分布式设置时,您总是会产生网络开销(图像从服务器 1 传输到服务器 2 所花费的时间),这会大大减慢您的训练速度。为了解决这个问题,您必须构建一个具有获取-执行重叠的多线程排队机制,这是一项艰巨的工作。在我看来,一个更简单的选择是将数据复制到训练机器中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)