我有一個用於培訓CNN的數據生成器,並且工作正常。現在我想通過以下cifar10_multi_gpu_train.py加速2個GPU(1個pc上)的訓練。 (https://www.tensorflow.org/programmers_guide/threading_and_queues)如何從數據生成器轉換爲tensorflow隊列以進行多GPU訓練。 cifar10_multi_gpu_train.py示例
問題:
1)如何轉換數據生成排隊?數據項目:(圖像文件目錄,輸出)。整個數據集:數據項目列表。批量數據集:部分整個數據集。如何把它放入張量如下:
batch_queue = tf.contrib.slim.prefetch_queue.prefetch_queue(
[images, labels], capacity=2 * FLAGS.num_gpus)
2)什麼是隊列的內容?
1.a)隊列需要整個數據集還是單個批處理數據集?
1.b)在我看來,在cifar10樣本中,隊列是1批。但是,它是如何遍歷所有數據集的?
1.c)如果隊列採用整個數據集,那麼gpu的每個線程中的數據是什麼?在這種情況下,我不確定我是否可以同時進行GPU訓練,因爲用於計算損失和梯度的每個數據集都取決於相同的模型狀態。但是,下一個數據集計算的下一個損失+梯度只有在最後一個完成後才能修改模型權重。可能工作