我希望并行运行经过训练的CNN的每一层以减少前向传播期间的计算时间(基本上我想运行CNN用于涉及摄像机的实时应用而不会过多地影响FPS)。我会为每一层保留一个输入队列和一个输出队列。每个层都可以处理来自输入层的blob并将其转储到输出层(这可以在逻辑上并行完成)。每个层的输出队列将作为下一层的输入队列。然后我将收集最终层的输出队列(它将成为二进制标签)的所有输出并处理它们。所以我的问题是,可以在Caffe或Tensorflow中并行运行CNN的每一层来实现这一点。
答案 0 :(得分:2)
使用Tensorflow,您可以指定“设备放置”,因此对于图表中的每个操作或一组操作,您可以说明在哪个GPU上运行它,例如,如果您有多个GPU。有关如何在GPU上执行操作的示例代码,请参阅this tutorial。
答案 1 :(得分:1)
不知道TF 关于caffe - 这听起来像个坏主意。在层之间放置队列和同步机制只会降低你的速度(特别是如果你在GPU上运行并通过CPU结构同步)。 Caffe设计用于顺序执行前进传球并快速完成。为什么你期望并行性能帮助你更快地运行它?