最近、仮想ロボット制御にニューラルネットワークを使用するプロジェクトに取り組んでいます。私はそれをコード化するためにテンソルフローを使用し、それは円滑に実行されます。これまでは、ニューラルネットワークがどれほど優れているかを評価するためにシーケンシャルシミュレーションを使用しましたが、データを取得するのにかかる時間を短縮するために、複数のシミュレーションを並列に実行したいのですが、です。テンソルフローとマルチプロセッシング:セッションの受け渡し
これを行うには、私はPythonのmultiprocessing
パッケージをインポートしています。最初は、sess変数(sess=tf.Session()
)をシミュレーションを実行する関数に渡していました。しかし、このsess
変数を使用するステートメントに到達すると、プロセスは警告なしで終了します。彼らは非常に私はそれを動作させる方法を見つけ出すことができていない関連している一方で Tensorflow: Passing a session to a python multiprocess とRunning multiple tensorflow sessions concurrently
:ビットの周りを検索した後、私は、これら2つのポストを見つけました。私は、個々のプロセスごとにセッションを作成し、ニューラルネットの重みを訓練可能なパラメータに成功なく割り当ててみました。セッションにファイルを保存してプロセス内に読み込もうとしましたが、そこには運がありません。
セッション(またはセッションのクローン)を複数のプロセスに渡すことができましたか?
ありがとうございました。
私は、プロセス間でセッションのクローンを渡すことはできないと思っています.Cアドレス空間には、Pythonがコピー方法を知らない状態があるためです。しかし、新しいプロセスごとに新しいセッションを作成することは効果的です。私はマルチプロセッシングを使用していませんが、しばしば、並列に2つのプロセスを開いて、独自のTensorFlowセッションを維持します。 –
2番目のリンクは複数のプロセスを並列に実行しますが、すべてのプロセス。 – MrRed
TensorFlowを配布することで回避することができます。つまり、ローカルワーカーとpsを用意して、 'tf.Session(" grpc:// localhost:2222 ")' https:/ /github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/how_tos/distributed/index.md –