在阅读了这个github问题之后,我觉得我对队列的理解缺少了一些东西:
https://github.com/tensorflow/tensorflow/issues/3009
我认为在将数据加载到队列中时,它会在最后一批计算时被预先传输到GPU,因此几乎没有带宽瓶颈,假设计算时间比加载下一个时间长批量。
但是上面的链接表明从队列到图表(numpy< - > TF)有一个昂贵的副本,并且将文件加载到图表中并在那里进行预处理会更快。但这对我来说没有意义。如果我从文件加载一个原始numpy数组的256x256图像,为什么重要?如果有的话,我认为numpy版本更快。我错过了什么?
答案 0 :(得分:4)
没有GPU队列的实现,因此它只将内容加载到主内存中,并且没有异步预取GPU。您可以使用固定到if ($(window).width() < 1000) {
alert('Less than 1000');
} else {
alert('More than 1000');
}
答案 1 :(得分:2)
documentation表示可以将队列固定到设备:
N.B。队列方法(例如q.enqueue(...))必须在与队列相同的设备上运行。创建这些操作时,将忽略不兼容的设备放置指令。
但是上面对我来说意味着任何一个试图入队的变量应该已经在GPU上了。
This评论表明可以使用tf.identity
执行预取。