2017-06-19 7 views
1

私はTensorflowを非常に新しくしているので、私の質問は本当に馬鹿に聞こえるかもしれませんが、実際にここでそれを聞いて適切な説明を見つけることができませんでした。 グラフ分散型Tensorflowプログラムでデータのバッチ処理または分散がどのように行われるかを理解するには、あなたの助けが必要です。Distributed Tensorflowでのデータ一括処理

私たちは、基本的に次のバッチを取得するために同じコードを持つ複数のクライアント、実行しているので:

batch_xs, batch_ys = mnist.train.next_batch(FLAGS.batch_size) 

を、私はこの非常に作業者にユニークなバッチを確保する方法を理解することができません。私にとっては、同じデータがすべての労働者に送られているようです。

この例のスクリプトでは、next_batchを読み取っているすべての繰り返しで、job_type = workerの2つのクライアントを実行しているため、両方のワーカーに同じnext_batchコードが表示されます。このシナリオでデータの並列処理がどのように機能するのか理解してください。

with sv.prepare_or_wait_for_session(server.target, config=sess_config) as sess: 
     print("Worker %d: Session initialization complete." % FLAGS.task_index) 
     # Loop until the supervisor shuts down or 1000000 steps have completed. 
     step = 0 
     while not sv.should_stop() and step < 1000000: 
      # Run a training step asynchronously. 
      batch_xs, batch_ys = mnist.train.next_batch(FLAGS.batch_size) 
      print("FETCHING NEXT BATCH %d" % FLAGS.batch_size) 
      train_feed = {x: batch_xs, y_: batch_ys} 

      _, step = sess.run([train_op, global_step], feed_dict=train_feed) 
      if step % 100 == 0: 
       print("Done step %d" % step) 

    # Ask for all the services to stop. 
    sv.stop() 

お手数をお待ちしております。すべての作業者がデータを生成するために使用される別個DataSetオブジェクトを有することになる - :mnist.train.next_batchによって呼び出される関数であるmnist.train.next_batchnext_batchのコード(in tensorflow.contrib.learn.python.learn.datasets.mnist)をみる

答えて

1

。したがって、各バッチは各作業者ごとに独立して生成されます。

  • すべてのデータポイントは、エフェクトごとに1回の作業で複数回使用できますが、サブセットはランダムに取得されるため、問題にはならない可能性があります。たとえ一部の労働者が同じデータポイントを見ていても、バッチ自体はランダムに生成されます。
+1

ありがとうございました。はい、私はあなたのポイントを参照してくださいが、私はデータの並列処理としてそれを見ていない、私は本当に私の仕事の負荷を分散することによって利益を見ていない。代わりに私はそれらに異なるバッチを与えることができれば(それは労働者の間で重複しないことが保証されています)、私は時間を節約することができ、したがっていくつかの利益を得ることができます。あなたは同意しますか、私はここで何かを逃していますか? – Gladiator

関連する問題