4
私はそれを呼び出すと自動的にa(データ、ラベル)のペアを生成するpython関数を持っています。 TensorFlow FIFOQueueにこの関数をどのように付加するかわからないので、キューは自分の関数から生成されたデータで埋められます。私がこれまで持っているコードは次のとおりです。Python関数からTensorFlowキューにデータをエンキューする方法
myq = tf.FIFOQueue(5000, [tf.float32, tf.float32], [[4],[1]])
enqueue_op = myq.enqueue(read_data()) # read_data() returns two numpy arrays of shape [4] and [1]
qr = tf.train.QueueRunner(myq, [enqueue_op]*2)
...
threads = qr.create_threads(sess=sess,coord=coord, start=True)
しかし、これは唯一の()を1回の関数READ_DATAを呼び出し、キューに同じ値をプッシュし続けます。エンキューメソッドに関数を正しく接続するにはどうすればよいのですか?(できればバックグラウンドで複数のスレッドを使用する)関数のデータをキューに入れることができます。ご協力いただきありがとうございます。
ああ。したがって、このセットアップはtf.train.QueueRunnerと実際には互換性がなく、エンキューオペレーションをスレッド化してループするための独自のコードを記述する必要がありますか? (そしてはい、read_data()にはTF操作が含まれていません) – TriSSSe
良い質問!私は最初の列を設定するときに同じ質問をしました。私はQueueRunnerをまだ使用していませんが、私の理解は、テンソルフローファイルやTFリーダーからのデータ読み込みのみをサポートしているということを推測するグラフからデータをエンキューした場合にのみ機能するということですサポートすることができます。独自の関数でデータを生成する場合は、グラフに渡す必要があります。これはプレースホルダーを意味します。 –
'tf.train.Coordinator()'を使用して、 'QueueRunner()'ではなく、シャットダウンとループ操作を調整することができます。待ち行列を閉じるには 'cancel_pending_enqueue_operations = True'を使用してください。 –