Я использую TensorFlow для реализации Нейтральной сети и хочу достичь такой архитектуры: есть 2 очереди, а именно Q1 и Q2. Q1 инициализируется некоторыми именами файлов, а Q2 будет заполнен примерами позже.Как реализовать структуру двойной очереди в tensorflow
Каждый раз, когда сеанс выполняет шаг, имя файла вызывается из Q1 и вводится в обрабатывающую часть. В части обработки данные считываются из файла, а генерирует некоторые, скажем 32, разные примеры из данных. Затем сгенерированные 32 примера будут помещены в Q2. Если Q2 достигнет некоторого предела, он отменяет партию примеров.
В частности, я генерируется почти на примеры 1M каждый раз, когда чтение из файла, так что такой процесс должен работать в фоновом режиме и избегать блокировать основной поток и enqueueing в Q2 должно быть асинхронно.
Мне не удалось найти решение. Я пробовал что-то вроде:
import tensorflow as tf
q1 = tf.FIFOQueue(capacity=32, dtypes=tf.int32)
init_op = q1.enqueue_many(([0, 1, 2],))
q2 = tf.FIFOQueue(capacity=64, dtypes=tf.int32)
r = q1.dequeue()
# mimic generating examples from data read from the file
for i in range(10):
enq_op = q2.enqueue(r * 10 + i)
s = q2.dequeue()
sess = tf.InteractiveSession()
sess.run(init_op)
# don't know what to do
sess.close()
Может ли кто-нибудь помочь!
Привет! Благодаря вашему ответу, и я понял, что я неправильно понял эти две концепции. Теперь я считаю, что я им понятен, и сделал некоторые попытки, но все равно не справляется. Не могли бы вы взглянуть на мой новый вопрос и помочь мне? http://stackoverflow.com/questions/37797751/running-queue-in-background-in-tensorflow-causes-strange-exceptions – HanXu