Mein Trainingssatz enthält zwei Arten von Dateien: Trainingsbild mit Dateiname wie "1.png" und Etikettendatei mit Namen wie "1.label.txt".Wie man TensorFlow Leser und Warteschlange benutzt, um zwei Akte gleichzeitig zu lesen?
ich einige Verwendung von Queue und Reader in Tutorials wie folgt gefunden:
filename_queue = tf.train.string_input_producer(filenames)
result.key, value = reader.read(filename_queue)
Da jedoch mein Trainingssatz zwei Arten von Datei enthält, eine entspricht einen. Wie kann ich den obigen Code für Warteschlangen und Leser verwenden?
EDIT
Ich denke an eine Warteschlange, die Basisnamen zu einer anderen zwei Warteschlange zuzuführen, die jeweils Bild- und Etikett ist. Code wie folgt aus:
with tf.Session() as sess:
base_name_queue = tf.train.string_input_producer(['image_names'], num_epochs=20)
base_name = base_name_queue.dequeue()
image_name = base_name + ".png"
image_name_queue = data_flow_ops.FIFOQueue(32, image_name.dtype.base_dtype)
image_name_queue.enqueue([image_name])
x = image_name_queue.dequeue()
print_op = tf.Print(image_name, [image_name])
qr = tf.train.QueueRunner(base_name_queue, [base_name_queue] * 4)
coord = tf.train.Coordinator()
enqueue_threads = qr.create_threads(sess, coord=coord, start=True)
for step in range(1000000):
if coord.should_stop():
break
print(sess.run(print_op))
coord.request_stop()
coord.join(enqueue_threads)
aber dieser Code ausgeführt wird zu einem Fehler führen würde:
TypeError: Fetch argument of has invalid type , must be a string or Tensor. (Can not convert a FIFOQueue into a Tensor or Operation.)
und dem Fehlerpunkt auf dieser Linie:
coord.join(enqueue_threads)
ich glaube, ich muss falsch verstehen, wie Die TensorFlow-Warteschlange funktioniert.
In dem Teil, in dem Sie 'image_name_queue' und' label_queue' definieren, können Sie 'shuffle' auf' true' setzen, wenn Sie für beide den gleichen Seed verwenden, z. füge 'seed = 123' zu beiden' tf.train.string_input_producer' hinzu. – MGoksu
@MGoksu Ja, du bist TOTALY richtig. Ich habe das gerade erst herausgefunden. Danke für Ihre Erinnerung. –
Vielen Dank für den Hinweis auf den 'shuffle' Parameter von' tf.train.string_input_producer'. Das unbestimmte Verhalten, das ich erlebt habe, gelöst :) –