2016-06-12 3 views
0

Я использую 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() 

Может ли кто-нибудь помочь!

ответ

0

Одна проблема, которую я вижу, заключается в том, что вы запутываете построение и исполнение графа. Ваш цикл for i in range(10) создает пустую опцию enqueue ops, она фактически не добавит r*10+i в вашу очередь.

Я рекомендую сначала пройти курс обучения, чтобы понять основные понятия - https://www.tensorflow.org/versions/r0.9/how_tos/threading_and_queues/index.html. Также this

+0

Привет! Благодаря вашему ответу, и я понял, что я неправильно понял эти две концепции. Теперь я считаю, что я им понятен, и сделал некоторые попытки, но все равно не справляется. Не могли бы вы взглянуть на мой новый вопрос и помочь мне? http://stackoverflow.com/questions/37797751/running-queue-in-background-in-tensorflow-causes-strange-exceptions – HanXu

Смежные вопросы