0
我有一个不幸的是具有不支持批处理一些节点。我已经能够有多个线程调用sess.run和投掷的(即还有待充实的自定义操作)图数据通过feed_dict进入。现在我已经将我的数据tfrecords要正确地使用队列,但仍然无法找到一个方法来告诉它不只是有多个线程调用sess.run()并行运行图的多个实例。我认为tensorflow开发人员在某处创建了更“pythonic”的方式,但我还没有找到它。我如何在tensorflow中做到这一点?Tensorflow多个样本,而不配料
编辑:即使在批量数据的情况下,前面的问题仍然存在,因为我的计算花了一半的时间在CPU上,一半花在GPU上,因此无论批处理如何,一半会等待另一半。我希望图形训练多个样本以异步填充该空间。
编辑2:我想我必须把伪这里不想读上面的文字谁的人。
import tensorflow as tf
resultOfCPUCalculation = someCPUOnlyOP(inputData)\\does not support batching
gpuResults = aBunchOfGPUOps(resultOfCPUCalculation)
with tf.Session() as sess:
sess.run([gpuResults])
//only uses 1 cpu core, and the gpu is idle while it's doing it's thing.
我想这样做是一个“管道”的方式,在这里只要CPU运算完成后,它开始在另一个样本。
对不起。我应该更清楚。当我说这些操作不支持批处理时,我的意思是在我的实际模型中,他们只需要一个单一的3D张量作为输入,而不是4D张量,其中最外层是批量。这意味着,除非我从根本上误解配料在张量流中的工作方式,否则我不能使用批次。因此我想只是平行运行图形。 –
另外,现在我想起来了,配料实际上是irellevant,因为即使有配料,我还是想以某种方式有图形的多个单独计算一次,作为图形上半年受限于CPU。在CPU正在等待GPU或等待CPU的GPU的时刻,我想在等待时给他们工作。我将编辑该问题以添加此信息。 –
此外,我从来没有见过py_func。不知道我是如何错过它的。这会使我已经发现的一些东西变得容易得多。 –