2017-12-23 15 views
1

私は比較的PythonとTensorflowの初心者です。そして、私がTensorflowのスレッディングとキューの一部を学習していたとき、私はちょっと混乱しました。Tensorflowのエンキューオーダーについて

したがって、マルチスレッド(QueueRunnerによって生成)を使用してデータソースから1つのキューをエンキューすると、エンキューの順序はどのようになりますか?キュー内のデータはデータソース内の元の順序を保持しますか?もしそうなら、マルチスレッドでこれを達成する方法は?そうでない場合は、RandomShuffleQueueが必要なのはなぜですか(エンキュー順序が固定されていない場合、デキュー順序をシャッフルすると少し冗長に見えます)。

ありがとうございます。

答えて

0

まず、ではなく、は入力パイプライン用のキュー/キューランナーを使用しなくてはなりません。代わりにDatasets APIを使用してください。より直感的で、はるかに簡単であるはずです。

再:

は、あなたの質問に答えるために、だから我々は、データソースからのキューをエンキューする(QueueRunnerによって生成された)、マルチスレッドを使用する場合、エンキュー順序は何になりますか?

この順序は定義されていません。スレッドスケジューリングに依存します。

Re:データソースのキュー内のデータが元の順序を維持しますか?

通常、データソースはファイルのセットです。通常、特定のファイルは1つのスレッドと1つのリーダーで処理されます。この場合、1つのファイルからの例の順序は保持されます(意図的にシャッフルしない限り、たとえばFIFOQueueの代わりにRandomShuffleQueueを使用)。

Re:なぜRandomShuffleQueueが必要ですか?

上記の一般的なシナリオでは、例をシャッフルしないと、その順序は保持されます。あなたがファイル内で何らかの命令を実行するかもしれないので、トレーニングのためにサンプルをシャッフルしたいかもしれません。また、ファイル間の順序は決定的ではありませんが、均一なランダムからはほど遠いです。あなたは、データセット全体にわたって均一なランダム順序を(近似に)近似したいかもしれません。

+0

ありがとうございました!それは本当に役に立ちます。 – PAN

関連する問題