【发布时间】:2016-10-02 10:55:06
【问题描述】:
我对 tensorflow 很陌生。我曾经使用 theano 进行深度学习开发。我注意到这两者之间的区别,那就是可以存储输入数据的位置。
在 Theano 中,它支持共享变量将输入数据存储在 GPU 内存上,以减少 CPU 和 GPU 之间的数据传输。
在tensorflow中,我们需要将数据输入到占位符中,数据可以来自CPU内存或文件。
我的问题是:是否可以将输入数据存储在 GPU 内存中以用于 tensorflow?还是它已经以某种神奇的方式做到了?
谢谢。
【问题讨论】:
-
这是一个完整的例子 -- mnist fully_connected_preloaded.py
-
@YaroslavBulatov 谢谢!
-
@zwlayer -- 这里是 convnets 基准的链接 -- github.com/soumith/convnet-benchmarks。此外,我将 Torch lbfgs.lua 示例脚本移植到 TensorFlow,并让它在全尺寸批次中运行得更快,这是一个比较 - github.com/yaroslavvb/lbfgs。在小批量上匹配性能更难——因为 TensorFlow 旨在扩展到分布式系统/未来的硬件芯片,所以存在多个间接级别,其中一些恒定的开销在微小的计算中占主导地位。 IE,乘以 2 个数字的脚本在 TF 中比 numpy 慢 1000 倍
-
@YaroslavBulatov 我知道这是一个老问题,但是在您链接到的第一个示例中打开
log_device_placement表明tf.train.slice_producer生成的排队操作驻留在CPU 上。在 CPU 上排队切片似乎抵消了将数据存储在 GPU 上的优势,因为切片将被传输到 CPU 并返回。我错过了什么吗? -
我明白了。这似乎是一种不常见的情况,通常数据读取不是瓶颈,因此数据存在于 cpu 上
标签: neural-network tensorflow theano deep-learning