2016-12-08 2 views
0

私のプロジェクトの1つでテンソルフローとPythonマルチプロセッシングを使用しています。私は、マルチ処理の前にセッションを初期化すると、マルチ処理がどこかでスタックしているように見えます。中断するときTensorflowはマルチプロセスの前にセッションを実行します

import tensorflow as tf 
from multiprocessing.pool import Pool 
graph = tf.Graph() 
with graph.as_default(): 
    X = tf.Variable([10, 1]) 
    init = tf.initialize_all_variables() 
graph.finalize() 

def run(i): 
    sess = tf.Session(graph=graph) 
    sess.run(init) 
    print sess.run(X) 
#uncomment for the bug 
#sess = tf.Session(graph=graph) 
#sess.close() 
p = Pool(4) 
res = p.map(run, [1,2,3]) 

そして、私が得たメッセージ:

Process PoolWorker-1: 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap 
    self.run() 
    File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run 
    self._target(*self._args, **self._kwargs) 
    File "/usr/lib/python2.7/multiprocessing/pool.py", line 102, in worker 
    task = get() 
    File "/usr/lib/python2.7/multiprocessing/queues.py", line 374, in get 
    racquire() 
KeyboardInterrupt 
+1

質問は何ですか?あなたのコードを修正するには? Tensorflowはマルチプロセッシングで実行するためのものではなく、マルチコアの実行を内部的に処理します – fabrizioM

+0

@fabrizioMありがとう、私はあなたが意味することを理解しています。私はTFの内部配布計算を使用します。 –

答えて

2

あなたが達成しようとしている何

私のコードは次のようになりますか?なぜ、同じグラフに対して複数のセッションを作成し、それらを並行して実行しようとしますか? @ fabrizioMが述べたように、TFは、適切に設定されていれば、CPUとGPUの間で計算を分散させます。したがって、TFを使用しようとする方法は実際にはサポートされていません。

関連する問題