TensorFlowの日本語まとめ

TensorFlowの公式サイトに書かれている英文を英語ど素人が翻訳(日本語訳/和訳)します。 間違いがありましたら、優しく教えていただけますと幸いです。 内容を理解したら、使ってみたい。

1.スレッディングとキュー

キューはTensorFlowを使用して非同期計算のための強力なメカニズムです

 

TensorFlowのすべてと同様にキューがTensorFlowグラフのノードがあります

 

これは次のとおり変数のようなステートフルノードです。他のノードは、その内容を変更することができます。具体的にはノードはキュー内に新しいアイテムまたはキューから両端のキューの既存の項目キューに入れることができます

 

スポンサーリンク

 

キューの感触を取得するには簡単な例考えてみましょう。私たちは、 "first in, first out" キュー(FIFOQueue)を作成し、ゼロでそれを記入します。その後、私たちは、その項目に1を加算し、キューからアイテムを受け取り、キューの最後にそれを裏に置くグラフを構築します。ゆっくりと、キューの数字を増加します。

f:id:TensorFlow:20160301203430g:plain

 

Enqueue, EnqueueMany, そして Dequeue特別なノードです。それらは、それを変更することができ、キューの代わりに正常値へのポインタを取ります。私たちは、あなたがキューの方法のようなこれらのものを考えることをお勧めします。実際には、PythonのAPIで、彼らは、キュー・オブジェクト(例:q.enqueue(...))の方法があります。


今、あなたはキューの感触のビットを持っていること、それでは、詳細に飛び込んでみましょう...

 

コーディネーター

コーディネータークラスは、複数のスレッドが一緒に停止するのに役立ちます

その主な方法は次のとおりです。

  • should_stop(): スレッドが停止した場合にTrueを返します
  • request_stop(<exception>): スレッドは停止する必要がある要求です。
  • join(<list of threads>): 指定されたスレッドが停止するまで待ちます

 

あなたが最初のCoordinatorオブジェクトを作成し、コーディネーターを使用するスレッドの数を作成します。スレッドは、通常、should_stop()Trueを返すときに停止ループを実行します。

 

任意のスレッドは、計算を停止すべきことを決定することができます。それだけでその後、Trueを返し、should_stop()として停止して、request_stop()および他のスレッドを呼び出す必要があります。

# Thread body: loop until the coordinator indicates a stop was requested.
# If some condition becomes true, ask the coordinator to stop.
def MyLoop(coord):
  while not coord.should_stop():
    ...do something...
    if ...some condition...:
      coord.request_stop()

# Main code: create a coordinator.
coord = Coordinator()

# Create 10 threads that run 'MyLoop()'
threads = [threading.Thread(target=MyLoop, args=(coord,)) for i in xrange(10)]

# Start the threads and wait for all of them to stop.
for t in threads: t.start()
coord.join(threads)

 

明らかに、コーディネータは非常に異なることをやってスレッドを管理することができますこれらは、上記の例のように全て同一である必要はありません。コーディネーターはまた、捕捉した例外を報告するためにサポートしています詳細は、 Coordinator classのドキュメントを参照してください。

 

 (原文)

Threading and Queues