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。不知道我是如何錯過它的。這會使我已經發現的一些東西變得容易得多。 –