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